DATEDIFF (Transact-SQL)

返回跨两个指定日期的日期边界数和时间边界数。

主题链接图标Transact-SQL 语法约定

语法

DATEDIFF ( datepart , startdate , enddate )

参数

  • datepart
    指定应在日期的哪一部分计算差额的参数。下表列出了 SQL Server 2005 可以识别的日期部分及其缩写。这些日期部分及其缩写不能作为用户声明的变量提供。

    日期部分 缩写

    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

  • startdate -
    计算的开始日期。startdate 是返回 datetimesmalldatetime 值或日期格式字符串的表达式

    由于 smalldatetime 只精确到分钟,所以在使用 smalldatetime 值时,秒和毫秒始终为 0。

    如果只指定年份的后两位数字,则小于或等于 two-digit year cutoff 配置选项值的后两位数字的值将与截止年份处于同一世纪中。比此选项值的后两位数字大的值先于截止年份的世纪。例如,如果 two-digit year cutoff 为 2049(默认值),则 49 被解释为 2049,2050 被解释为 1950。为避免含糊歧义,请使用四位数表示的年份。

    有关如何指定时间值的详细信息,请参阅时间格式。有关如何指定日期的详细信息,请参阅 日期和时间 (Transact-SQL)

  • enddate
    计算的结束日期。enddate 是返回 datetimesmalldatetime 值或日期格式字符串的表达式。

返回类型

integer

备注

enddate 减去 startdate。如果 startdate 晚于 enddate,则返回负值。

如果结果超出整数值范围,则 DATEDIFF 将产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。

跨分钟、秒和毫秒等边界计算的方法使得 DATEDIFF 指定的结果在所有数据类型中均一致。结果是带正负号的整数值,它等于跨第一个和第二个日期间的 datepart 边界数。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之间的星期数是 1。

示例

以下示例确定在 AdventureWorks 数据库中产品的订单日期和当前日期相差的天数。

USE AdventureWorks;
GO
SELECT DATEDIFF(day, OrderDate, GETDATE()) AS NumberOfDays
FROM Sales.SalesOrderHeader;
GO

请参阅

参考

CAST 和 CONVERT (Transact-SQL)
数据类型 (Transact-SQL)
日期和时间函数 (Transact-SQL)

其他资源

ISO 8601 格式
字母日期格式
数值日期格式
ODBC 日期时间格式
时间格式
未分隔字符串格式

帮助和信息

获取 SQL Server 2005 帮助