SQL Server日期函数应用
Posted ThinPro
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server日期函数应用相关的知识,希望对你有一定的参考价值。
SQL SERVER 中提供了日期时间相关的函数,在编写SQL时,根据实际的业务要求,选择合适的函数使用。
日期函数应用:
1.获取当前日期时间
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格式
SELECT GETDATE() --结果:2017-09-08 10:55:03.957
下表列出了 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 星期五
函数:DATEPART( datepart , 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 日期转换代码片段 - Dato,120,konvertere