SQLServer中的Datediff函数
SQL Server中的Datediff函数
1、描述:返回两个⽇期之间的时间间隔, ⽤于判断在两个⽇期之间存在的指定时间间隔的数⽬。
2、语法:DateDiff(interval, startdate, enddate)
3、各个属性描述如下:
a、interval:必选。字符串表达式,表⽰⽤于计算 startdate 和 enddate 之间的时间间隔。有关数值,可以参考“interval参数表”。
b、startdate:计算的开始⽇期。startdate 是返回 datetime 或 smalldatetime 值或⽇期格式字符串的表达式。 因为 smalldatetime 只精确到分钟,所以当⽤ smalldatetime 值时,秒和毫秒总是 0。如果只指定年份的最后两位数字,则⼩于或等于"两位数年份截⽌期"配置选项的值的最后两位数字的数字所在世纪与截⽌年所在世纪相同。⼤于该选项的值的最后两位数字的数字所在世纪为截⽌年所在世纪的前⼀个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使⽤四位数的年份。
c、enddate:计算的终⽌⽇期。enddate 是返回 datetime 或 smalldatetime 值或⽇期格式字符串的表达式。
d、返回类型:integer,两个⽇期之间的差值
4、说明:
a、要计算 startdate 和 enddate 相差的天数,可以使⽤“⼀年的⽇数”(“y”)或“⽇”(“d”)。当 interval 为“⼀周的⽇
数”(“w”)时,DateDiff 返回两个⽇期之间的星期数。如果 startdate 是星期⼀,则 DateDiff 计算到 enddate 之前星期⼀的数⽬。此结果包含 enddate ⽽不包含 startdate。如果 interval 是“周”(“ww”),则 DateDiff 函数返回⽇历表中两个⽇期之间的星期数。函数计算 startdate 和 enddate 之间星期⽇的数⽬。如果 enddate 是星期⽇,DateDiff 将计算 enddate,但即使 startdate 是星期⽇,也不会计算 startdate。
b、startdate 是从 enddate 减去。如果 startdate ⽐ enddate 晚,返回负值。
c、当结果超出整数值范围,DATEDIFF 产⽣错误。对于毫秒,最⼤数是 24 天 20 ⼩时 31 分钟零 23.647 秒。对于秒,最⼤数是 68年。
5、interval参数表:
序号⽇期部分缩写中⽂描述
1year yy,yyyy年
2quarter qq,q季度
3dayofyear dy,y⼀年的⽇数(按年来计算有多少天)
4month mm,m⽉
5day dd,d⽇
6week wk,ww周
7w⼀周的⽇数(按周来计算有多少天)8hour hh⼩时
9minute mi,n分
10second ss,s秒
11millisecond ms毫秒
6、实例:
--计算当前⽇期和指点⽇期之间的时间间隔
--当前⽇期:2015-05-06(因时间⼀直在表所以存在误差) 指定⽇期:2014-05-06
select getDATE()
--1、年
select datediff(year,'2014-05-06',getdate());--output:1
select datediff(year,getdate(),'2014-05-06');--output:-1
select datediff(year,getdate(),getdate());--output:0
datediff是字符型函数--2、季度
select datediff(quarter,'2014-05-06',getdate());--output:4
-
-3、⼀年的⽇数(按年来计算有多少天)
select datediff(dayofyear,'2014-05-06',getdate());--output:365
select datediff(y,'2007-05-06','2008-05-06');--output:366
--4、⽉
select datediff(month,'2014-05-06',getdate());--output:12
--5、⽇
select datediff(day,'2014-05-06',getdate());--output:365
select datediff(day,'2007-05-06','2008-05-06');--output:366
--6、周
select datediff(week,'2014-05-06',getdate());--output:52
select datediff(ww,'2015-04-06',getdate());--output:4
-
-7、⼀周的⽇数(按周来计算有多少天)
select datediff(w,'2014-05-06',getdate());--output:365
select datediff(w,'2015-04-06',getdate());--output:30
--8、⼩时
select datediff(hour,'2014-05-06',getdate());--output:8770
select datediff(hour,'2015-04-06',getdate());--output:730(30*24+10点)
--9、分钟
select datediff(minute,'2015-05-06 11:00:00',getdate());--output:3
--10、秒
select datediff(second,'2015-05-06 11:00:00',getdate());--output:200
--11、毫秒
select datediff(millisecond,'2015-05-06 11:00:00',getdate());--output:238190
由上⾯的实例可以看出:dayofyear和day输出的结果是⼀样的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论