SQL Server日期加减函数DATEDIFF与DATEADD用法分析
本文实例讲述了SQLServer日期加减函数DATEDIFF与DATEADD用法。分享给大家供大家参考,具体如下:
SQLServer日期的加减函数:DATEDIFF DATEADD
DATEDIFF:返回跨两个指定日期的日期边界数和时间边界数,语法:DATEDIFF(datepart,startdate,enddate)用enddate减去startdate
注:datepart指定应在日期的哪一部分计算差额的参数,其日期相减时,只关注边界值,例:
SELECTDATEDIFF(YEAR,'2008-12-31','2009-1-1')
返回1
DATEADD:返回给指定日期加上一个时间间隔后的新datetime值。语法:DATEADD(datepart,number,date)
注:datepart指定要返回新值的日期的组成部分
number使用来增加datepart的值。正数表示增加,负数表示减少,如果是小数则忽略小数部分,且不做四舍五入。
通过DATEDIFF和DATEADD的一些日期计算
1)一年的第一天
SELECTDATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0)
注:首先DATEDIFF(YEAR,0,GETDATE())--计算当前年份与1900年相差的年数,然后通过计算1900-1-1加上相差的年数的日期即为当年第一天
2)一个季的第一天
SELECTDATEADD(Quarter,DATEDIFF(Quarter,0,GETDATE()),0)
注:首先DATEDIFF(Quarter,0,GETDATE())--计算当前月份与1900年相差的季份数,然后通过计算1900-1-1加上相差的季份数的日期即为当季第一天
3)一个月的第一天
SELECTDATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0)
注:首先DATEDIFF(MONTH,0,GETDATE())--计算当前月份与1900年相差的月份数,然后通过计算1900-1-1加上相差的月份数的日期即为当月第一天
4)一周的第一天
SELECTDATEADD(wk,DATEDIFF(wk,0,GETDATE()),0)
5)当天的半夜(00:00:00.000)
SELECTDATEADD(DAY,DATEDIFF(DAY,0,GETDATE()),0)
6)上月的最后一天
SELECTDATEADD(ms,-3,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0))
注:用本月的第一天减去3毫秒,即得出上个月的最有一天.SQLSERVERDATETIME类型的时间精确到3毫秒。
7)本月的最后一天
SELECTDATEADD(ms,-3,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0))
8)本月的天数
i)
SELECTDAY(DATEADD(ms,-3,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0)))
ii)
SELECT32-DAY(GETDATE()+(32-DAY(GETDATE())))
9)本年的最后一天
SELECTDATEADD(ms,-3,DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE())+1,0))
10)一周的第一天
SELECTDATEADD(DAY,1-DATEPART(weekday,GETDATE()),GETDATE())
一周的最后一天
SELECTDATEADD(DAY,7-DATEPART(WeekDay,GETDATE()),GETDATE()) SELECTDATEADD(weekday,DATEDIFF(weekday,0,DATEADD(DAY,6-DATEPART(day,GETDATE()),GETDATE())),0)
日期转换函数CONVERTCAST
CONVERT中的Style.参数:108和114可以只得到时间。
例
SELECTCONVERT(NVARCHAR(12),GETDATE(),108)---12:41:15 SELECTCONVERT(NVARCHAR(12),GETDATE(),114)---12:43:12:590
日期判断函数ISDATE()确定输入表达式是否为有效日期。若有效返回1否则返回0,返回值为INT。
DATEADD日期函数
DATEADD()函数在日期中添加或减去指定的时间间隔。
日:
在当前日期上加两天
selectDATEADD(day,2,'2014-12-30')2015-01-01
selectDATEADD(dd,2,'2014-12-30')
月:
在当前日期上加两个月
selectDATEADD(mm,2,'2014-12-30')结果:2015-02-28
selectDATEADD(MONTH,2,'2014-12-30')结果:2015-02-28
年:
在当前日期上加两年
selectDATEADD(yy,2,'2014-12-30')结果:2016-12-30
selectDATEADD(year,2,'2014-12-30')结果:2016-12-30
语法
DATEADD(datepart,number,date)
date参数是合法的日期表达式。number
是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
datepart参数可以是下列的值:
datepart 缩写
年 yy,yyyy
季度 qq,q
月 mm,m
年中的日 dy,y
日 dd,d
周 wk,ww
星期 dw,w
小时 hh
分钟 mi,n
秒 ss,s
毫秒 ms
微妙 mcs
纳秒 ns
更多关于SQLServer相关内容感兴趣的读者可查看本站专题:《SQLServer日期与时间操作技巧总结》、《SQLServer查询操作技巧大全》、《SQLServer存储过程技巧大全》、《SQLServer索引操作技巧大全》及《SQLServer常用函数汇总》
希望本文所述对大家SQLServer数据库程序设计有所帮助。