SQL Server常用函数

2017-04-24  本文已影响0人  简书冷雨

1、DATEDIFF() 函数

定义和用法

** DATEDIFF() 函数 **根据时间间隔类型(如年、月、日、时、分、秒、季、周等)计算两个日期之间的时间间隔数,即用于判断在两个日期之间的指定时间间隔的数目。例如,可以使用 DATEDIFF() 计算两个日期相差的天数,或者当天到当年最后一天之间的星期数。

语法

DATEDIFF(datepart, startdate, enddate)

参数

startdate 和 enddate 参数是合法的日期表达式(time, date, smalldatetime, datetime, datetime2, or datetimeoffset ),可以是表达式、列名、用户自定义变量或字符串常量。

datepart 参数为时间间隔类型,可以是下列的值:

datepart 全称 缩写
year yy, yyyy
季度 quarter qq, q
month mm, m
年中的日 dayofyear dy, y
day dd, d
week wk, ww
星期 weekday dw, w
小时 hour hh
分钟 minute mi, n
second ss, s
毫秒 millisecond ms
微妙 microsecond mcs
纳秒 nanosecond ns

备注

DATEDIFF()函数的返回值类型为 int (-2,147,483,648 +2,147,483,647),所以,当指定时间间隔类型为

如果 startdate 和 enddate 都只指定时间部分,而 datepart 又不是时间间隔(如年、月等),则返回 0。如,

SELECT DATEDIFF(WEEK, '20:32:32', '23:32:17');         --结果为 0
SELECT DATEDIFF(DAY, '20:32:32', '23:32:17');          --结果为 0

startdate 和 enddate 的时区在计算返回值时没有用到。

因为 smalldatetime 只精确到分,所以当 startdate 或 enddate 是 smalldatetime 类型时,秒、毫秒默认都为 0。如,

SELECT DATEDIFF(MILLISECOND, CAST('2015-02-02 20:32:10' AS SMALLDATETIME), CAST('2015-02-02 20:32:15' AS SMALLDATETIME));         --结果为 0
SELECT DATEDIFF(MILLISECOND, CAST('2015-02-02 20:32:10' AS SMALLDATETIME), CAST('2015-02-02 20:32:30' AS SMALLDATETIME));         --结果为 60000
SELECT DATEDIFF(SECOND, CAST('2015-02-02 20:32:10' AS SMALLDATETIME), CAST('2015-02-02 20:32:15' AS SMALLDATETIME));         --结果为 0
SELECT DATEDIFF(SECOND, CAST('2015-02-02 20:32:10' AS SMALLDATETIME), CAST('2015-02-02 20:32:30' AS SMALLDATETIME));         --结果为 60

如果日期类型变量只指定了时间部分,那么日期部分会设置为默认值:1900-01-01。如果只指定了日期部分,那么时间部分会设置默认值:00:00:00。

实例

例子 1
使用如下 SELECT 语句:

SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate

结果:

DiffDate
1

例子 2

使用如下 SELECT 语句:

SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate

结果:

DiffDate
-1
上一篇下一篇

猜你喜欢

热点阅读