SQL Server日期函数应用

Posted ThinPro

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server日期函数应用相关的知识,希望对你有一定的参考价值。

SQL SERVER 中提供了日期时间相关的函数,在编写SQL时,根据实际的业务要求,选择合适的函数使用。

日期函数应用:

1.获取当前日期时间 

  GETDATE() 

2.获取日期时间中的一部分数据 

  DATENAME datepart , date )  返回date中datepart部分的字符串

  DATEPART( datepart date )    返回date中datepart部分的整数

  YEAR( date )    返回date中整数年

  MONTH( date )   返回date中整数月

  DAY( date )       返回date中整数日 

3.日期时间差和运算

  DateDiff (datepart ,date1,date2)   返回date2 与date1两个日期之间用datepart部分运算的差值

  DateAdd (datepart ,number,date)    返回date的datepart部分加上number之后的日期

4.获取指定格式的日期时间字符串

  CONVERT(varchar(100),GetDate(),23)  返回 yyyy-mm-dd格式

  其他格式大全汇总

 


 函数:GETDATE()

SELECT GETDATE()    
--结果:2017-09-08 10:55:03.957 

 


 

文中函数的datepart参数使用

下表列出了 Microsoft? SQL Server? 识别的日期部分和缩写。

日期含义 英文全拼 缩写 备注
year yy, yyyy  
季度 quarter qq, q  
month mm, m  
第几天(本年中) dayofyear dy, y  
day dd, d  
第几周(本年中) week wk, ww  
星期几 weekday dw 周日是1  周六是7
Hour hh  
minute mi, n  
second ss, s  
毫秒 millisecond ms

 

 


 

 函数:DATENAME datepart , date 返回date中datepart 部分的字符串类型结果  datepart 参数说明详见

Select Datename(yyyy,GetDate())+-+Datename(month,GetDate())+-+Datename(dd,GetDate()),Datename(dw,GetDate())
--结果:2017-09-8    星期五

 


 

函数:DATEPARTdatepart , date 返回date中datepart部分的整数类型结果  datepart 参数说明详见

Select DATEPART(year,GetDate()),DATEPART(month,GetDate()),DATEPART(day,GetDate())
--结果:2017    9    8

 


 

函数:YEAR( date ) 返回date中年份的整数类型结果

SELECT YEAR(GETDATE())
--结果:2017

 


 

函数:MONTH( date ) 返回date中月份的整数类型结果

SELECT MONTH(GETDATE())
--结果:9

 


 

函数:DAY( date )  返回date中日期的整数类型结果

SELECT DAY(GETDATE())
--结果:8

 


 

函数:DateDiff (datepart ,date1,date2)   返回date2 与date1两个日期之间用datepart部分运算的差值  datepart 参数说明详见

SELECT DATEDIFF(YEAR,2013-05-01,2017-09-08 16:26:26.300)     --相差 4 年度
SELECT DATEDIFF(QQ,2013-05-01,2017-09-08 16:26:26.300)        --相差 17 季度
SELECT DATEDIFF(MM,2013-05-01,2017-09-08 16:26:26.300)        --相差 52 月
SELECT DATEDIFF(DD,2013-05-01,2017-09-08 16:26:26.300)        --相差 1591 天
SELECT DATEDIFF(HH,2013-05-01,2017-09-08 16:26:26.300)        --相差 38200 小时

 


 

函数:DateAdd (datepart ,number,date)    返回date的datepart部分加上number之后的日期  datepart 参数说明详见

SELECT DATEADD(YEAR,3,2017-09-08 16:26:26)     --加3年    2020-09-08 16:26:26.000
SELECT DATEADD(YEAR,-3,2017-09-08 16:26:26)    --减3年    2014-09-08 16:26:26.000
SELECT DATEADD(QQ,3,2017-09-08 16:26:26)       --加3季度  2018-06-08 16:26:26.000  --9月
SELECT DATEADD(MM,3,2017-09-08 16:26:26)       --加3个月  2017-12-08 16:26:26.000
SELECT DATEADD(MI,3,2017-09-08 16:26:26)       --加3分钟  2017-09-08 16:29:26.000

 


 

函数:Convert(varchar(100),date,样式号)  返回date特定样式的日期时间字符串结果

内置的样式很多,我做了下分类:

1.仅有时间部分,不包含日期

SELECT CONVERT(varchar(100), GETDATE(),  24) --17:22:16
SELECT CONVERT(varchar(100), GETDATE(),   8) --17:22:16
SELECT CONVERT(varchar(100), GETDATE(), 108) --17:22:16
SELECT CONVERT(varchar(100), GETDATE(),  14) --17:22:16:213
SELECT CONVERT(varchar(100), GETDATE(), 114) --17:22:16:213

2.用 “-” 做为日期分隔符

                                             --YYYY-MM-DD HH:MI:SS:MS
SELECT CONVERT(varchar(100), GETDATE(),  23) --2017-09-08
SELECT CONVERT(varchar(100), GETDATE(),  20) --2017-09-08 17:36:40
SELECT CONVERT(varchar(100), GETDATE(), 120) --2017-09-08 17:36:40
SELECT CONVERT(varchar(100), GETDATE(),  21) --2017-09-08 17:36:40.523
SELECT CONVERT(varchar(100), GETDATE(), 121) --2017-09-08 17:36:40.523
SELECT CONVERT(varchar(100), GETDATE(),  25) --2017-09-08 17:36:40.523
SELECT CONVERT(varchar(100), GETDATE(), 126) --2017-09-08T17:36:40.523

                                             --DD-MM-YYYY
SELECT CONVERT(varchar(100), GETDATE(),   5) --08-09-17
SELECT CONVERT(varchar(100), GETDATE(), 105) --08-09-2017

                                             --MM-DD-YYYY
SELECT CONVERT(varchar(100), GETDATE(),  10) --09-08-17
SELECT CONVERT(varchar(100), GETDATE(), 110) --09-08-2017

3.用 “/” 做为日期分隔符

                                             --YYYY-MM-DD
SELECT CONVERT(varchar(100), GETDATE(),  11) --  17/09/08
SELECT CONVERT(varchar(100), GETDATE(), 111) --2017/09/08

                                             --MM-DD-YYYY
SELECT CONVERT(varchar(100), GETDATE(),  22) --09/08/17  5:51:49 PM
SELECT CONVERT(varchar(100), GETDATE(),   1) --09/08/17
SELECT CONVERT(varchar(100), GETDATE(), 101) --09/08/2017

                                             --DD-MM-YYYY
SELECT CONVERT(varchar(100), GETDATE(),   3) --08/09/17
SELECT CONVERT(varchar(100), GETDATE(), 103) --08/09/2017

4.用 ”." 做为日期分隔符

                                             --YYYY.MM.DD
SELECT CONVERT(varchar(100), GETDATE(),   2) --  17.09.08
SELECT CONVERT(varchar(100), GETDATE(), 102) --2017.09.08

                                             --DD.MM.YYYY
SELECT CONVERT(varchar(100), GETDATE(),   4) --08.09.17
SELECT CONVERT(varchar(100), GETDATE(), 104) --08.09.2017

5.用 空格 做为日期分隔符

                                             --MM DD YYYY HH:MI:SS:MS
SELECT CONVERT(varchar(100), GETDATE(),   0) --09  8 2017  5:28PM
SELECT CONVERT(varchar(100), GETDATE(), 100) --09  8 2017  5:28PM
SELECT CONVERT(varchar(100), GETDATE(),   9) --09  8 2017  5:28:37:473PM
SELECT CONVERT(varchar(100), GETDATE(), 109) --09  8 2017  5:28:37:473PM

                                             --DD MM YYYY HH:MI:SS:MS
SELECT CONVERT(varchar(100), GETDATE(),   6) --08 09 17
SELECT CONVERT(varchar(100), GETDATE(), 106) --08 09 2017
SELECT CONVERT(varchar(100), GETDATE(),  13) --08 09 2017 17:29:58:170
SELECT CONVERT(varchar(100), GETDATE(), 113) --08 09 2017 17:29:58:170

6.特殊格式,空格 和逗号分割

                                             --DD MM,YYYY
SELECT CONVERT(varchar(100), GETDATE(),   7) --09 08, 17
SELECT CONVERT(varchar(100), GETDATE(), 107) --09 08, 2017

7.无间隔

                                             --YYYYMMDD
SELECT CONVERT(varchar(100), GETDATE(),  12) --  170908
SELECT CONVERT(varchar(100), GETDATE(), 112) --20170908

 





以上是关于SQL Server日期函数应用的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 函数之 日期格式化函数

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

sql 日期转换代码片段 - Dato,120,konvertere

Microsoft SQL Server 代码片段收集

SQL Server DATEADD() 函数及实际项目应用注意事项

缺少 SQL SERVER 2014 代码片段