DATEDIFF 函数 [日期和时间]

功能 
返回两个日期之间的间隔。

语法 
DATEDIFF ( date-part, date-expression-1, date-expression-2 )

date-part :
year | quarter | month | week | day | hour | minute | second | millisecond

参数 
date-part    指定要测量其间隔的日期部分。

date-expression-1    某一间隔的起始日期。从 date-expression-2 中减去该值,返回两个参数之间 date-parts 的天数。

date-expression-2    某一间隔的结束日期。从该值中减去 Date-expression-1,返回两个参数之间 date-parts 的天数。

法:select datediff(day,'2014/12/12','2012/12/20')和select datediff(day,'2014-12-12','2014-12-00')一样

 

用法 
此函数计算两个指定日期之间日期部分的数目。结果为日期部分中等于(date2 - date1)的有符号的整数值。

 

当结果不是日期部分的偶数倍时,DATEDIFF 将被截断而不是被舍入。

 

当使用 day 作为日期部分时,DATEDIFF 返回两个指定的时间之间(包括第二个日期但不包括第一个日期)的午夜数。

 

当使用 month 作为日期部分时,DATEDIFF 返回两个日期之间(包括第二个日期但不包括第一个日期)出现的月的第一天的数目。

 

当使用 week 作为日期部分时,DATEDIFF 返回两个日期(包括第二个日期但不包括第一个日期)之间星期日的数目。

 

对于更小的时间单位存在溢出值:

 

milliseconds    24 天

 

seconds    68 年

 

minutes    4083 年

 

others    没有溢出限制

 

如果超出这些限制,此函数将返回溢出错误。

 实际例子:

declare @day int
declare @hour int
declare @min int
declare @sec int
declare @alls int
set @alls=datediff(s,'2009-11-21 00:00:00','2009-11-24 15:12:24')
set @day=@alls/86400
set @hour=(@alls-@day*86400)/3600
set @min=(@alls-@day*86400-@hour*3600)/60
set @sec=@alls-@day*86400-@hour*3600-@min*60
select CAST(@day as varchar(5))+''+CAST(@hour as varchar(2))+'小时'+CAST(@min as varchar(2))+''+CAST(@sec as varchar(2))+''

 

posted on 2014-12-12 15:55  清风暮雨  阅读(1166)  评论(0)    收藏  举报