T-SQL 中DateDiff 函数

时间:2021-11-17 22:11:06

DateDiff函数简介

   返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。  

示例  
示例确定在 pubs 数据库中标题发布日期和当前日期间的天数。
  USE pubsGOSELECT DATEDIFF(day, pubdate, getdate()) AS no_of_daysFROM titlesGO
  DATEDIFF函数在Access和MSSQL中的使用区别
  ACCESS中用法:DATEDIFF('day', pubdate, Now())
  MSSQL中用法:DATEDIFF(day, pubdate, getdate())
  Sybase中用法:DATEDIFF(dd, pubdate, getdate())

语法
DateDiff(interval,   date1,   date2   [,firstdayofweek[,   firstweekofyear]])
DateDiff   函数的语法有以下参数:

参数   描述  
interval   必选。字符串表达式,表示用于计算   date1   和   date2   之间的时间间隔。有关数值,请参阅“设置”部分。  
date1,   date2   必选。日期表达式。用于计算的两个日期。  
firstdayofweek   可选。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。  
firstweekofyear   可选。指定一年中第一周的常数。如果没有指定,则默认为   1   月   1   日所在的星期。有关数值,请参阅“设置”部分。  


设置
interval   参数可以有以下值:
设置   描述  
yyyy   年  
q   季度  
m   月  
y   一年的日数  
d   日  
w   一周的日数  
ww   周  
h   小时  
m   分钟  
s   秒  


firstdayofweek   参数可以有以下值:

常数   值   描述  
vbUseSystem   0   使用区域语言支持   (NLS)   API   设置。  
vbSunday   1   星期日(默认)  
vbMonday   2   星期一  
vbTuesday   3   星期二  
vbWednesday   4   星期三  
vbThursday   5   星期四  
vbFriday   6   星期五  
vbSaturday   7   星期六  


firstweekofyear   参数可以有以下值:

常数   值   描述  
vbUseSystem   0   使用区域语言支持   (NLS)   API   设置。  
vbFirstJan1   1   由   1   月   1   日所在的星期开始(默认)。  
vbFirstFourDays   2   由在新年中至少有四天的第一周开始。  
vbFirstFullWeek   3   由在新的一年中第一个完整的周开始。  


说明
DateDiff   函数用于判断在两个日期之间存在的指定时间间隔的数目。例如可以使用   DateDiff   计算两个日期相差的天数,或者当天到当年最后一天之间的星期数。
要计算   date1   和   date2   相差的天数,可以使用“一年的日数”(“y”)或“日”(“d”)。当   interval   为“一周的日数”(“w”)时,DateDiff   返回两个日期之间的星期数。如果   date1   是星期一,则   DateDiff   计算到   date2   之前星期一的数目。此结果包含   date2   而不包含   date1。如果   interval   是“周”(“ww”),则   DateDiff   函数返回日历表中两个日期之间的星期数。函数计算   date1   和   date2   之间星期日的数目。如果   date2   是星期日,DateDiff   将计算   date2,但即使   date1   是星期日,也不会计算   date1。

如果   date1   晚于   date2,则   DateDiff   函数返回负数。

firstdayofweek   参数会对使用“w”和“ww”间隔符号的计算产生影响。

如果   date1   或   date2   是日期文字,则指定的年度会成为日期的固定部分。但是如果   date1   或   date2   被包括在引号   ( "   ")   中并且省略年份,则在代码中每次计算   date1   或   date2   表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码。

在   interval   为“年”(“yyyy”)时,比较   12   月   31   日和来年的   1   月   1   日,虽然实际上只相差一天,DateDiff   返回   1   表示相差一个年份。
  T-SQL 中DateDiff 函数