SQL Server 函数映射的规范化概念模型

本主题介绍概念模型规范函数如何映射到相应的 SQL Server 函数。

日期和时间函数

下表介绍了日期和时间函数映射:

规范函数 SQL Server 函数
AddDays(expression) DATEADD(day, number, date)
AddHours(expression) DATEADD(hour, number, date)
AddMicroseconds(expression) DATEADD(microsecond, number, date)
AddMilliseconds(expression) DATEADD(millisecond, number, date)
AddMinutes(expression) DATEADD(minute, number, date)
AddMonths(expression) DATEADD(month, number, date)
AddNanoseconds(expression) DATEADD(nanosecond, number, date)
AddSeconds(expression) DATEADD(second, number, date)
AddYears(expression) 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(hour, minute, second) 在服务器上创建 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(expression) DatePart(dayofyear, expression)
Day(expression) 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(expression) DatePart(hour, expression)
Millisecond(expression) DatePart(millisecond, expression)
Minute(expression) DatePart(minute, expression)
Month(expression) DatePart(month, expression)
Second(expression) DatePart(second, expression)
Truncate(expression) 对于 SQL Server 2000 和 SQL Server 2005,在服务器上创建被截断的带格式的 datetime 值。 对于 SQL Server 2008 及更高版本,在服务器上创建被截断的 datetime2datetimeoffset 值。
Year(expression) DatePart(YEAR, expression)

聚合函数

下表介绍了聚合函数映射:

规范函数 SQL Server 函数
Avg(expression) AVG(expression)
BigCount(expression) BIGCOUNT(expression)
Count(expression) COUNT(expression)
Min(expression) MIN(expression)
Max(expression) MAX(expression)
StDev(expression) STDEV(expression)
StDevP(expression) STDEVP(expression)
Sum(expression) SUM(expression)
Var(expression) VAR(expression)
VarP(expression) 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)
Truncate 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

注意:如果 string 存储在固定长度字符串列中且 target 为常量,CHARINDEX 函数返回 false。 在这种情况下,将搜索整个字符串,包括任何填充尾随空格。 一种可行的解决方法是在将字符串传递给 EndsWith 函数前,将数据裁剪为固定长度字符串,如下面的示例所示:EndsWith(TRIM(string), target)
IndexOf(target, string2) CHARINDEX(target, string2)
Left (string1, length) LEFT(string1, length)
Length (string) LEN(string)
LTrim(string) LTRIM(string)
Right (string1, length) RIGHT (string1, length)
Trim(string) LTRIM(RTRIM(string))
Replace (string1, string2, string3) REPLACE(string1, string2, string3)
Reverse (string) 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 (value) ~value
BitWiseOr (value1, value2) value1 | value2
BitWiseXor (value1, value2) value1 ^ value2