本文部分内容参考msdn帮助文档和博客园!汇总备忘
1、获取当前日期
getdate()函数以datetime数据类型的格式返回当前SQLServer服务器所在计算机的日期和时间。其语法格式为getdate()。返回值舍入到最近的秒小数部分,精度为.333秒数据库十七偏移量不包含在内。
示例:
SELECT GETDATE() --输出 2016-03-24 12:35:03.333
getutcdate()函数返回表示当前的 UTC 时间得自当前的本地时间和运行 SQL Server 的计算机操作系统中的时区设置。此值表示当前的 UTC 时间(注:世界统一时间)。
SELECT GETUTCDATE() --输出 2016-03-24 04:35:03.333
2、获取年度信息YEAR,月份信息MONTH,天数信息day
year函数以int数据类型的格式返回特定日期的年度信息。其语法格式为YEAR(date数据)。其中的date数据时一个可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式,列表达式、用户定义的变量或字符串文字。
示例:getdate() ='2016-03-24 12:54:41.463'
SELECT YEAR(GETDATE()) --输出 2016
month函数以int数据类型的格式返回特定日期的月份信息。其语法格式为month(date数据)。其中的date数据时一个可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式,列表达式、用户定义的变量或字符串文字。
SELECT MONTH(GETDATE()) --输出 3
day函数以int数据类型的格式返回特定日期的天数信息。其语法格式为day(date数据)。其中的date数据时一个可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式,列表达式、用户定义的变量或字符串文字。
SELECT DAY(GETDATE()) --输出 24
3、获取任意时间部分DateName
返回表示指定 date 的指定 datepart 的字符串。
语法:
datename(datepart,date)
参数:datepart是返回的date的一部分。下表列出了所有有效的datepart参数。
注:getdate() ='2016-03-24 12:54:41.463'
datepart | 缩写形式 | 返回值 参考 | 描述 |
year | yy,yyyy | 2016 | 返回年 |
quarter | qq,q | 1 | 返回第几个季度 |
month | mm,m | 03 | 返回月 |
dayofyear | dy,y | 84 | 一年中的第几天 |
day | dd,d | 24 | date中的天数部分 |
week | wk,ww | 13 | 一年中的第几周 |
weekday | dw,w | 星期四 | 返回星期几 |
hour | hh | 12 | date中的小时部分 |
minute | mi,n | 54 | date中的分钟部分 |
second | ss,s | 41 | date中的秒部分 |
millisecond | ms | 463 | date中的毫秒部分 |
4、获取任意时间部分DatePart
datepart函数以int数据类型的格式返回某个日期时间数据的指定部分。
1、语法格式:
datepart( datepart , date)
datepart:特定的要返回的数据的格式代码。
date数据:一个可以解析为time、date、smalldatetime、datetime、datetime2或者datetimeoffset值的表达式、列表表达式、用户定义的变量或字符串文字。
2、Datepart取值
Datepart部分的取值如下表所示:
datepart | 缩写形式 | 返回值 参考 | 描述 |
year | yy,yyyy | 2016 | 返回年度信息 |
quarter | qq,q | 1 | 返回第几个季度 |
month | mm,m | 03 | 返回月份信息 |
dayofyear | dy,y | 84 | 一年中的第几天 |
day | dd,d | 24 | date中的天数部分 |
week | wk,ww | 13 | 一年中的第几周 |
weekday | dw,w | 5 | 返回星期几 |
hour | hh | 12 | date中的小时部分 |
minute | mi,n | 54 | date中的分钟部分 |
second | ss,s | 41 | date中的秒部分 |
millisecond | ms | 463 | date中的毫秒部分 |
5、日期加法DATEADD
dateadd函数将某个日期加上一个特定的时间间隔值后返回datetime数据类型的值。
1、语法格式:
dateadd (datepart,numer,date)
numer:用于与detepart相加的值。如果指定了非整数值,则将舍弃该值的小数部分。
date数据:一个用于解析为time、date、smalldatetime、datetime、datetime2、或datetimeoffset值的表达式、列表达式、用户定义的变量或字符串文字。
datepart:时间部分。上节。
示例:
select getdate() --输出 2016-03-24 16:03:59.293 select dateadd(YYYY,10,getdate()) --加了十年 输出2026-03-24 16:04:36.893
6、日期减法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
7、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
8、Current_TimeStamp当前数据库系统时间戳
返回当前数据库系统时间戳,返回值的类型为 datetime,并且不含数据库时区偏移量。 此值得自运行 SQL Server 实例的计算机的操作系统。等价于GetDate();
SELECT CURRENT_TIMESTAMP --2013-06-18 16:16:10.007
9、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
10、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 可分配给采用任意日期和时间类型的变量。
11、判断是否为日期数据isDate
ISDATE函数可以验证某个输入值是否为有效的日期数据
1、语法结构:
ISDATE(expression)
2、返回值
若表达式为有效日期则返回 1 ,否则返回 0 。
示例:
select isdate('2012-12-12') -- 输出1 select isdate('xxxx-12-12') -- 输出0
12、eomonth 返回包含指定日期的月份的最后一天
适用范围:SQL Server(SQL Server 2012 至当前版本),Azure SQL Database。
语法:
eomonth ( start_date [, month_to_add ] )
示例:
DECLARE @date DATETIME = GETDATE(); SELECT EOMONTH ( @date ) AS 'This Month';--当月 SELECT EOMONTH ( @date, 1 ) AS 'Next Month';--下一月 SELECT EOMONTH ( @date, -1 ) AS 'Last Month';--上一月 GO