本主题介绍概念模型规范函数如何映射到相应的 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 |