MSSQL “日期和时间”函数用法及功能简介


1 Current_Timestamp/GetDate()

功能:返回当前时间精确到毫秒,以上两各函数具有相同的功能

参数:


返回值:
返回一个dateTime类型


举例说明:

  select Current_timestamp
  select getdate()



2 Dateadd

功能:给日期指定部分添加相应的值形成新的日期

参数:
日期部分
日期部分增量(integer)
源日期

返回值:
datetime类型(通过增量计算得到的值)


举例说明:


 /*2.1 给定一个日期 2017-7-12  增加一周  以下是三种写法*/
select DATEADD(week,1,'2017-7-12'),DATEADD(wk,1,'2017-7-12'),DATEADD(ww,1,'2017-7-12')
/*2.2 给定一个日期2017-7-12 增加一天*/
select DATEADD(day,1,'2017-7-12'),DATEADD(d,1,'2017-7-12'),DATEADD(dd,1,'2017-7-12')
/*2.3 给定一个日期2017-7-12 减少一天*/
select DATEADD(day,-1,'2017-7-12'),DATEADD(d,-1,'2017-7-12'),DATEADD(dd,-1,'2017-7-12')



3 Datediff

功能:返回给定两个时间差

参数:
日期部分
开始时间
结束时间

返回值:
int型,将时间差相减转换为日期部分中的类型


举例说明:


  /*3.1 返回两个日期之间的天数 */
select DATEDIFF(day,'2017-7-10 10:00:00','2017-7-11 19:00:00'),DATEDIFF(d,'2017-7-10 10:00:00','2017-7-11 19:00:00'),
DATEDIFF(dd,'2017-7-10 10:00:00','2017-7-11 19:00:00') 

/*3.2 返回两个日期之间的小时 */
select DATEDIFF(hour,'2017-7-10 10:00:00','2017-7-11 19:00:00'),DATEDIFF(hh,'2017-7-10 10:00:00','2017-7-11 19:00:00') 

/*3.3 返回两个日期之间的分数 */
select DATEDIFF(minute,'2017-7-10 10:00:00','2017-7-11 19:00:00'),DATEDIFF(mi,'2017-7-10 10:00:00','2017-7-11 19:00:00'),
DATEDIFF(n,'2017-7-10 10:00:00','2017-7-11 19:00:00')



4 Datename /Datepart

功能: 以上两个函数拥有相同的用法,都是返回指定日期部分的数据,例 返回日期中的年份 毫秒数

参数:
日期部分
日期

返回值:
integer类型


举例说明:


  /*4 Datename用法 */
/*返回当前日期的年 月 日  毫秒  周 一年中的多少天*/
declare @d datetime
 set @d ='2017-7-12 18:09:32:897'
 
 select DATENAME(YEAR,@d) as [年份],DATENAME(MONTH,@d) as [月份],DATENAME(DAY,@d) as [天],
 DATENAME(ms,@d) as [毫秒], DATENAME(wk,@d) as [周], DATENAME(y,@d) as [一年中的第多少天]

   select datepart(YEAR,@d) as [年份],datepart(MONTH,@d) as [月份],datepart(DAY,@d) as [天],
 datepart(ms,@d) as [毫秒], datepart(wk,@d) as [周], datepart(y,@d) as [一年中的第多少天]




5 Day

功能: 返回一个日期数据的day部分

参数:
日期

返回值:
integer类型


举例说明:


  /*5 Day用法 返回一个日期类型中的day部分*/
declare @d datetime
 set @d ='2017-7-1 18:09:32:897'
 select DAY(@d)
 



6 getutcdate()

功能: 返回一个全球UTC标准时间
此时间比北京时间慢8个小时


参数:
日期

返回值:
integer类型


举例说明:


  /*6 getutcdate*/
  select GETDATE(),getutcdate()



7 isDate

功能: 验证当前字符串是否可以转换为一个日期类型

参数:
字符串 varchar

返回值:
integer类型
0代表验证失败
1代表验证成功


举例说明:


  select ISDATE('244'),ISDATE('2017-1-'),ISDATE('2017-1-1'),ISDATE('2017-1-2 14:89:5'),ISDATE('2017-7-12 13:9:4:567')



8 Month

功能:返回一个日期数据的month(月份)部分

参数:
日期

返回值:
integer类型


举例说明:


   /*8 Month用法 返回一个日期类型中的月份部分*/
declare @d datetime
 set @d ='2017-7-1 18:09:32:897'
 select Month(@d)



9 Sysdatetime()

功能:返回出更高精度的时间(比毫微秒精度还高)

参数:


返回值:
datetime


举例说明:


    select SYSDATETIME(),datepart(mcs,GETDATE()),datepart(mcs,SYSDATETIME()),datepart(NS,SYSDATETIME())



10 SYSDATETIMEOFFSET()

功能:返回出更高精度的时间(比毫微秒精度还高) 并加入当前时间比UTC时间的偏移值

参数:


返回值:
datetime +偏移值 (datetimeoffset)


举例说明:


   select SYSDATETIMEOFFSET(),SYSDATETIME()



11 SYSUTCDATETIME()

功能:返回出更高精度的世界时间(比毫微秒精度还高)

参数:


返回值:
datetime


举例说明:


    select SYSUTCDATETIME(),datepart(mcs,GETUTCDATE()),datepart(mcs,SYSUTCDATETIME()),datepart(NS,SYSUTCDATETIME())



12 switchoffset()

功能:对datetimeoffset包含时区的数据类型,进行时区加减计算

参数:
datetimeoffset

返回值:
datetimeoffset


举例说明:


 /*12.1 定义一个包含时区的值进行计算*/
   declare @t datetimeoffset 
   set @t= '2017-07-12 10:56:53.3771263 +08:00' ---加八个时区
   select SWITCHOFFSET(@t,420)   --加7个市区 7*60 =420    



13 todatetimeoffset()

功能:将datetime和时区一起转换为”datetimeoffset”类型

参数:
datetime
时区

返回值:
datetimeoffset


举例说明:


 /*12.1 定义一个包含时区的值进行计算*/
   declare @t datetime 
   set @t= '2017-07-12 10:56:53'  
   select todatetimeoffset(@t,420)   --加7个市区 7*60 =420    



14 year

功能:返回一个日期数据的year(年)部分

参数:
日期

返回值:
integer类型


举例说明:


   /*14 year用法 返回一个日期类型中的年份部分*/
declare @d datetime
 set @d ='2017-7-1 18:09:32:897'
 select Year(@d)


相关阅读:
mssql 日期关键字叫法分类–日期部分