本主题介绍概念模型规范函数如何映射到相应的 SQL Server 函数。
日期和时间函数
下表描述了日期和时间函数映射:
| 规范函数 | SQL Server 函数 |
|---|---|
| AddDays(表达式) | DATEADD(day, number, date) |
| AddHours(表达式) | DATEADD(hour, number, date) |
| AddMicroseconds(表达式) | DATEADD(microsecond, number, date) |
| AddMilliseconds(表达式) | DATEADD(millisecond, number, date) |
| AddMinutes(表达式) | DATEADD(minute, number, date) |
| AddMonths(表达式) | DATEADD(month, number, date) |
| AddNanoseconds(表达式) | DATEADD(nanosecond, number, date) |
| AddSeconds(表达式) | DATEADD(second, number, date) |
| AddYears(表达式) | DATEADD(year, number, date) |
| CreateDateTime(year、month、day、hour、minute、second) | 对于 SQL Server 2000 和 SQL Server 2005,格式化的 datetime 值在服务器上创建。 对于 SQL Server 2008 及更高版本,将在服务器上创建一个 datetime2 值。 |
| CreateDateTimeOffset(year、month、day、hour、minute、second、tzoffset) | 在服务器上创建了一个格式化的datetimeoffset值。SQL Server 2000 或 SQL Server 2005 不支持。 |
| CreateTime(小时、分钟、秒) | 在服务器上创建了一个格式化的time值。SQL Server 2000 或 SQL Server 2005 不支持。 |
| CurrentDateTime() |
SysDateTime()(在 SQLServer 2008 中)。GetDate() 在 SQLServer 2000 和 SQLServer 2005 中。 |
| CurrentDateTimeOffset() |
SysDateTimeOffset()(在 SQL Server 2008 中)。SQL Server 2000 或 SQL Server 2005 不支持。 |
| CurrentUtcDateTime() |
SysUtcDateTime()(在 SQLServer 2008 中)。
GetUtcDate() 在 SQL Server 2000 和 SQL Server 2005 中。 |
| DayOfYear(表达式) | DatePart(dayofyear, expression) |
| Day(表达式) | DatePart(day, expression) |
| DiffDays(startExpression, endExpression) | DATEDIFF(day, startdate, enddate) |
| DiffHours(startExpression, endExpression) | DATEDIFF(hour, startdate, enddate) |
| DiffMicroseconds(startExpression, endExpression) | DATEDIFF(microsecond, startdate, enddate) |
| DiffMilliseconds(startExpression, endExpression) | DATEDIFF(millisecond, startdate, enddate) |
| DiffMinutes(startExpression, endExpression) | DATEDIFF(minute, startdate, enddate) |
| DiffNanoseconds(startExpression, endExpression) | DATEDIFF(nanosecond, startdate, enddate) |
| DiffSeconds(startExpression, endExpression) | DATEDIFF(second, startdate, enddate) |
| DiffYears(startExpression, endExpression) | DATEDIFF(year, startdate, enddate) |
| GetTotalOffsetMinutes(DateTimeOffset) | DatePart(tzoffset, expression) |
| Hour(表达式) | DatePart(hour, expression) |
| 毫秒(表达式) | DatePart(millisecond, expression) |
| Minute(表达式) | DatePart(minute, expression) |
| 月份(表达式) | DatePart(month, expression) |
| 秒(表达式) | DatePart(second, expression) |
| Truncate(表达式) | 对于 SQL Server 2000 和 SQL Server 2005,在服务器上创建被截断的带格式的 datetime 值。 对于 SQL Server 2008 及更高版本,在服务器上创建被截断的 datetime2 或 datetimeoffset 值。 |
| Year(expression) | DatePart(YEAR, expression) |
聚合函数
下表描述了聚合函数映射:
| 规范函数 | SQL Server 函数 |
|---|---|
| Avg(expression) | AVG(expression) |
| BigCount(表达式) | BIGCOUNT(expression) |
| Count(表达式) | COUNT(expression) |
| Min(表达式) | MIN(expression) |
| Max(表达式) | MAX(expression) |
| StDev(表达式) | STDEV(expression) |
| StDevP(表达式) | STDEVP(expression) |
| Sum(表达式) | SUM(expression) |
| Var(表达式) | VAR(expression) |
| VarP(表达式) | VARP(expression) |
数学函数
下表描述了数学函数映射:
| 规范函数 | SQL Server 函数 |
|---|---|
| Abs(value) | ABS(value) |
| Ceiling(value) | CEILING(value) |
| Floor(value) | FLOOR(value) |
| Power(value) | POWER(value, exponent) |
| Round(value) | ROUND(value, digits, 0) |
| 截断 | ROUND(value , digits, 1) |
字符串函数
下表描述了字符串函数映射:
| 规范函数 | SQL Server 函数 |
|---|---|
| Contains(string, target) | CHARINDEX(target, string) |
| Concat(string1, string2) | string1 + string2 |
| EndsWith(string, target) | CHARINDEX(REVERSE(target), REVERSE(string)) = 1注意 如果 CHARINDEX存储在固定长度字符串列中并且false是常量,string函数将返回target。 在这种情况下,将搜索整个字符串,包括任何填充尾随空格。 可能的解决方法是在将字符串传递给函数之前剪裁固定长度字符串 EndsWith 中的数据,如以下示例所示: EndsWith(TRIM(string), target) |
| IndexOf(target,string2) | CHARINDEX(target, string2) |
| 左 (string1, length) | LEFT(string1, length) |
| 长度(字符串) | LEN(string) |
| LTrim(string) | LTRIM(string) |
| 右 (string1, length) | RIGHT (string1, length) |
| Trim(string) | LTRIM(RTRIM(string)) |
| 替换 (string1, string2, string3) | REPLACE(string1, string2, string3) |
| 反向 (字符串) | REVERSE (string) |
| RTrim(string) | RTRIM(string) |
| StartsWith(string, target) | CHARINDEX(target, string) |
| Substring(string, start, length) | SUBSTRING(string, start, length) |
| ToLower(string) | LOWER(string) |
| ToUpper(string) | UPPER(string) |
位函数
下表描述了按位函数映射:
| 规范函数 | SQL Server 函数 |
|---|---|
| BitWiseAnd (value1, value2) | value1 和 value2 |
| BitWiseNot (值) | ~价值 |
| BitWiseOr (value1,value2) | value1 |value2 |
| BitWiseXor (value1,value2) | value1 ^ value2 |