SQL Server⽇期时间函数
⽇期时间函数
1、获取当前⽇期GetDate
getdate()函数以datetime数据类型的格式返回当前SQLServer服务器所在计算机的⽇期和时间。其语法格式为getdate()。返回值舍⼊到最近的秒⼩数部分,精度为.333秒数据库⼗七偏移量不包含在内。
⽰例:
select getdate() --输出 2013-03-09 15:16:00.570
2、GetUTCDate 获取UTC时间值
select GETUTCDATE() -- 2013-06-18 08:02:53.253
这个获取到的是UTC时间。
3、获取年度信息YEAR
year函数以int数据类型的格式返回特定⽇期的年度信息。其语法格式为YEAR(date数据)。其中的date数据时⼀个可以解析为 time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式,列表达式、⽤户定义的变量或字符串⽂字。
⽰例:
select year(getdate()) --输出 2013
4、获取⽉份信息MONTH
month函数以int数据类型的格式返回特定⽇期的⽉份信息。其语法格式为month(date数据)。其中的date数据时⼀个可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式,列表达式、⽤户定义的变量或字符串⽂字。
⽰例:
select month(getdate()) --输出 3
5、获取天数信息day
day函数以int数据类型的格式返回特定⽇期的天数信息。其语法格式为day(date数据)。其中的date数据时⼀个可以解析为 time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式,列表达式、⽤户定义的变量或字符串⽂字。
⽰例:
select day(getdate()) --输出 9
6、获取任意时间部分DatePart
datepart函数以int数据类型的格式返回某个⽇期时间数据的指定部分。
1、语法格式:
datepart( datepart , date数据 )
datepart:特定的要返回的数据的格式代码。
date数据:⼀个可以解析为time、date、smalldatetime、datetime、datetime2或者datetimeoffset值的表达式、列表表达式、⽤户定义的变量或字符串⽂字。
2、Datepart取值
Datepart部分的取值如下表所⽰:
说明取值
返回年度信息Year、YYYY、YY
返回⽉份信息Month、MM、M
返回⽇期信息Day、DD、D
返回周信息Week、WK、WW
返回每周星期⼏信息WeekDay、DW
返回季度信息Quarter、QQ、Q
返回⼀年中第⼏天的信息DayOfYear、DY、Y
返回⼩时信息Hour、HH
返回分钟信息Minute、MI、N
返回秒信息Second、SS、SS
返回毫秒信息MillSecond、MS
7、获取任意时间部分DateName
返回表⽰指定⽇期的指定⽇期部分的字符串。
SELECT DateName(Quarter,GetDate()) --输出 2(6⽉)
⽰例:
select datepart(Quarter,getdate()) --输出 1 现在是第⼏季度
8、⽇期加法DATEADD
dateadd函数将某个⽇期加上⼀个特定的时间间隔值后返回datetime数据类型的值。
1、语法格式:
dateadd (datepart,numer,date数据)
numer:⽤于与detepart相加的值。如果指定了⾮整数值,则将舍弃该值的⼩数部分。
date数据:⼀个⽤于解析为time、date、smalldatetime、datetime、datetime2、或datetimeoffset值的表达式、列表达式、⽤户定义的变量或字符串⽂字。
datepart:时间部分。上节。
⽰例:
select getdate() --输出 2013-03-09 16:03:59.293
select dateadd(YYYY,10,getdate()) --加了⼗年输出2023-03-09 16:04:36.893
8、⽇期减法DATEDIFF
datediff函数将两个特定的⽇期数据相减,得到的结果可以按照detepart指定的格式返回特定的数据。
1、语法格式:
datediff(datepart,startdate,enddate)
执⾏中将使⽤enddate减以startdate的值,如果startdate晚于enddate将返回负值。执⾏结果如果超出整数范围将提⽰错误。
startdate:⼀个可以解析为time、date、smalldate、datetime、datetime2或datetimeoffset值的表达式、列表达式、⽤户定义的变量或字符串⽂字。
enddate:⼀个可以解析为time、date、smalldate、datetime、datetime2或datetimeoffset值的表达式、列表达式、⽤户定义的变量或字符串⽂字。
datepart:时间部分。
⽰例:
select datediff(YYYY,'2011-11-11','2012-12-12') --输出1 年份相减之后的确是1
select datediff(day,'2011-11-11','2012-12-12') --输出 397 两个⽇期相差的天数
2013-3-13⽇补充,⽤此⽅法查询当前的记录:
select * from test where datediff(day,Rq,getdate()) = 0 --其中Rq为⽇期列,此⾏代码的意思是什么呢?getdate()减去Rq列的值为0,Rq列的值与今天相减,号数为0
9、SQLServer 2008中新增的⽇期时间型函数
1、获取系统时间 SysDateTime
sysdatetime函数以datetime2(7)数据类型的格式返回当前系统的⽇期和时间。其语法格式为sysdatetime()。返回值有七个⼩数位,但只精确到10毫秒。数据库偏移量未包含在内。
SELECT SYSDATETIME() --2013-06-17 22:17:59.0610211
2、获取当前⽇期和时间 SysDateTimeOffset
sysdatetimeoffset函数以datetimeoffset(7)数据类型的格式返回当前系统的⽇期和时间。其语法格式为sysdatetimeoffset()。返回值有七个⼩数位,但只精确到10毫秒。数据库时区偏移量包含在内。
SELECT sysdatetimeoffset() --2013-06-17 22:18:30.1788009 +08:00
3、获取系统UTC时间 SysUTCDateTime
select SysUTCDateTime() -- 2013-06-18 08:09:17.8229505
10、Current_TimeStamp当前数据库系统时间戳
返回当前数据库系统时间戳,返回值的类型为 datetime,并且不含数据库时区偏移量。此值得⾃运⾏ SQL Server 实例的计算机的操作系统。等价于GetDate();
SELECT CURRENT_TIMESTAMP --2013-06-18 16:16:10.007
11、SWITCHOFFSET更改时间偏移量
SwitchOffset更改 DateTimeOffset 值的时区偏移量并保留 UTC 值。
SELECT SysDateTimeOffset() -- 2013-06-18 16:40:34.4322865 +08:00
SELECT SWITCHOFFSET (SysDateTimeOffset(), '+07:00') --2013-06-18 15:40:53.5403794 +07:00
12、TodateTimeOffset datetime2转datetimeoffset
返回从 datetime2 表达式转换⽽来的⼀个 datetimeoffset 值。
SELECT SysDateTimeOffset() -- 2013-06-18 16:40:34.4322865 +08:00
SELECT TodateTimeOffset(GetDate(),'+07:00') --2013-06-18 16:46:10.537 +07:00
留意到以上代码是只更改时区,但是不更改时值。
SysDateTime 和 SysUTCDate 在秒⼩数部分精度上要⽐ GetDate 和 GetUTCDate ⾼。 SysDateTimeOffset 包含系统时区偏移量。
SysDateTime、SysUTCDate 和 SysDateTimeOffset 可分配给采⽤任意⽇期和时间类型的变量。
13、判断是否为⽇期数据isDate
ISDATE函数可以验证某个输⼊值是否为有效的⽇期数据
1、语法结构:
ISDATE(expression)
2、返回值
若表达式为有效⽇期则返回 1 ,否则返回 0 。
⽰例:
select isdate('2012-12-12') -- 输出1
select isdate('xxxx-12-12') -- 输出0
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论