1、getdate():获取当前日期
返回当前SQLServer服务器所在计算机的日期和时间。返回值舍入到最近的秒小数部分,精度为.333秒数据库十七偏移量不包含在内。
1
|
select getdate() --输出 2013-03-09 15:16:00.570 |
2、getutcdate():获取UTC时间值
1
|
select GETUTCDATE() -- 2013-06-18 08:02:53.253 |
3、year():获取年度信息
year函数以int数据类型的格式返回特定日期的年度信息。其中的date数据时一个可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式,列表达式、用户定义的变量或字符串文字。
1
|
select year (getdate()) --输出 2013 |
4、month():获取月份信息
month函数以int数据类型的格式返回特定日期的月份信息。
1
|
select month (getdate()) --输出 3 |
5、day():获取天数信息
day函数以int数据类型的格式返回特定日期的天数信息。
1
|
select day (getdate()) --输出 9 |
6、datepart():获取任意时间部分
datepart函数以int数据类型的格式返回某个日期时间数据的指定部分。
1
|
datepart( datepart , date 数据 ) |
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、S |
返回毫秒信息 | MillSecond、MS |
1
2
|
SELECT DATEPART(yyyy,OrderDate) AS OrderYear,DATEPART(mm,OrderDate) AS OrderMonth,DATEPART(dd,OrderDate) AS OrderDay FROM Orders WHERE OrderId=1 |
7、datename():获取任意时间部分
返回表示指定日期的指定日期部分的字符串。
1
|
SELECT DateName(Quarter,GetDate()) --输出 2(6月) |
8、dateadd():日期加法
dateadd函数将某个日期加上一个特定的时间间隔值后返回datetime数据类型的值。
1
|
dateadd (datepart,numer, date 数据) |
numer参数:用于与detepart相加的值。如果指定了非整数值,则将舍弃该值的小数部分。
1
2
|
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将返回负值。执行结果如果超出整数范围将提示错误。
1
2
3
|
select datediff(YYYY, '2011-11-11' , '2012-12-12' ) --1 select datediff( day , '2011-11-11' , '2012-12-12' ) --397 select * from test where datediff( day ,Rq,getdate()) = 0 --返回当天的数据: |
9、SQLServer 2008中新增的日期时间型函数
1、sysdatetime():获取系统时间
sysdatetime函数以datetime2(7)数据类型的格式返回当前系统的日期和时间。返回值有七个小数位,但只精确到10毫秒。数据库偏移量未包含在内。
1
|
SELECT SYSDATETIME() --2013-06-17 22:17:59.0610211 |
2、sysdatetimeoffset():获取当前日期和时间
sysdatetimeoffset函数以datetimeoffset(7)数据类型的格式返回当前系统的日期和时间。返回值有七个小数位,但只精确到10毫秒。数据库时区偏移量包含在内。
1
|
SELECT sysdatetimeoffset() --2013-06-17 22:18:30.1788009 +08:00 |
3、sysutcdatetime():获取系统UTC时间
1
|
select SysUTCDateTime() -- 2013-06-18 08:09:17.8229505 |
10、current_timestamp:当前数据库系统时间戳
返回当前数据库系统时间戳,返回值的类型为 datetime,并且不含数据库时区偏移量。 此值得自运行 SQL Server 实例的计算机的操作系统。等价于GetDate();
1
|
SELECT CURRENT_TIMESTAMP --2013-06-18 16:16:10.007 |
11、switchoffset():更改时间偏移量
SwitchOffset更改 DateTimeOffset 值的时区偏移量并保留 UTC 值。
1
2
|
SELECT SysDateTimeOffset() -- 2013-06-18 16:40:34.4322865 +08:00 ELECT SWITCHOFFSET (SysDateTimeOffset(), '+07:00' ) --2013-06-18 15:40:53.5403794 +07:00 |
12、todatetimeoffset():返回从 datetime2 表达式转换的 datetimeoffset 值 。
返回从 datetime2 表达式转换而来的一个 datetimeoffset 值。
1
2
|
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 ,否则返回 0 。
1
2
|
select isdate( '2012-12-12' ) -- 输出1 select isdate( 'xxxx-12-12' ) -- 输出0 |
14、获取当天零点
1
2
|
select convert (datetime, convert ( varchar (10),getdate(),120)) select dateadd( day ,datediff( day ,0,getdate()),0) |
15、官方完整日期函数清单:
http://technet.microsoft.com/zh-cn/library/ms186724.aspx#ModifyDateandTimeValues
到此这篇关于SQL Server日期时间函数的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/springsnow/p/9881617.html