设为首页 收藏本站
查看: 687|回复: 0

[经验分享] SQL Server中的Datediff函数

[复制链接]

尚未签到

发表于 2016-10-30 09:53:57 | 显示全部楼层 |阅读模式
  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参数表:


序号


日期部分


缩写


中文描述


1


year


yy,yyyy





2


quarter


qqq


季度


3


dayofyear


dy,y


一年的日数(按年来计算有多少天)


4


month


mm,m





5


day


dd,d





6


week


wkww





7


 


w


一周的日数(按周来计算有多少天)


8


hour


hh


小时


9


minute


min





10


second


sss





11


millisecond


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
--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输出的结果是一样的

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-293257-1-1.html 上篇帖子: SQL Server中的Datediff函数 下篇帖子: SQL SERVER链接服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表