2024年6月12日发(作者:)

DATEDIFF (Transact-SQL)

返回指定的startdate和enddate之间所跨的指定datepart边界的计数(带符号的整数)。

Transact-SQL 语法约定

语法

复制

DATEDIFF (datepart ,startdate ,enddate )

参数

datepart

是指定所跨边界类型的startdate和enddate的一部分。下表列出了所有有效的datepart参

数。用户定义的变量等效项是无效的。

datepart 缩写

year yy, yyyy

quarter qq, q

month mm, m

dayofyear dy, y

day dd, d

week wk, ww

hour hh

minute mi, n

second ss, s

millisecond ms

microsecond mcs

nanosecond

startdate

ns

是一个表达式,可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset

值。date可以是表达式、列表达式、用户定义的变量或字符串文字。从enddate减去startdate。

为避免不确定性,请使用四位数年份。有关两位数年份的信息,请参阅two digit year cutoff

选项。

enddate

请参阅startdate。

返回类型

int

返回值

 每个datepart及其缩写都返回相同的值。

如果返回值超出int的范围(-2,147,483,648 到 +2,147,483,647),则会返回一个错误。对于millisecond,

startdate与enddate之间的最大差值为 24 天 20 小时 31 分钟 23.647 秒。对于second,最大差

值为 68 年。

如果为startdate和enddate都只指定了时间值,并且datepart不是时间datepart,则会返回 0。

在计算返回值时不使用startdate或endate的时区偏移量部分。

由于smalldatetime仅精确到分钟,因此将smalldatetime值用作startdate或enddate时,返回值中

的秒和毫秒将始终设置为 0。