thumbnail
SQL Server日期处理

sqlserver

日期

1.日期列表

传入时间字符串,列出来接下来6天的日期列表。传入的时间如果是周一,那么列出的就是本周的日期啦

SELECT CONVERT
	( VARCHAR ( 10 ), DATEADD( DAY, number, '2021-03-15' ), 23 ) date_result
FROM
	master..spt_values 
WHERE
	type = 'p' AND number < 7

在这里插入图片描述

传入时间字符串,列出来前6天的日期列表

SELECT CONVERT
	( VARCHAR ( 100 ), dateadd( d, number, CONVERT ( datetime, '2021-03-15', 126 ) - 6 ), 23 ) AS date_result 
FROM
	master..spt_values n 
WHERE
	n.type = 'p' AND n.number < 7

在这里插入图片描述


2.时间转换

格式化时间,获取yyyyMMdd

SELECT CONVERT ( VARCHAR ( 10 ), '1949-10-01 12:13:14', 120 ) AS result

结果:1949-10-01


字符串转时间

SELECT CONVERT ( datetime, '2021-03-15', 126 ) AS date_result

结果:2021-03-15 00:00:00.000


时间转字符串

SELECT CONVERT(varchar(100), GETDATE(), 120)

结果:2021-03-15 15:10:21


格式类型

年份(yy) 年份(yyyy) 标准 输出
- 0 或 100 (*) 默认值
1 101 美国
2 102 ANSI
3 103 英国/法国
4 104 德国
5 105 意大利
6 106 -
7 107 -
8 108 -
- 9 或 109 (*) 默认值 + 毫秒
10 110 美国
11 111 日本
12 112 ISO
- 13 或 113 (*) 欧洲默认值 + 毫秒
14 114 -
- 20 或 120 (*) ODBC 规范
- 21 或 121 (*) ODBC 规范(带毫秒)
- 126(***) ISO8601
- 130* 科威特
- 131* 科威特

3.时间计算

本年第一天

SELECT DATEADD( yy, DATEDIFF( yy, 0, getdate( ) ), 0 ) AS [本年第一天]

本年最后一天

SELECT DATEADD( ms,- 3, DATEADD( yy, DATEDIFF( yy, 0, getdate( ) ) + 1, 0 ) ) AS [本年最后一天]

本月第一天

SELECT DATEADD( mm, DATEDIFF( mm, 0, getdate( ) ), 0 ) AS [本月第一天]

本月最后一天

SELECT DATEADD( ms,- 3, DATEADD( mm, DATEDIFF( m, 0, getdate( ) ) + 1, 0 ) ) AS [本月最后一天]

本周第一天

SELECT DATEADD( wk, DATEDIFF( wk, 0, getdate( ) ), 0 ) AS [本周第一天]

今天凌晨

SELECT DATEADD( dd, DATEDIFF( dd, 0, getdate( ) ), 0 ) AS [今天的凌晨]

字符串

未完待续…

上一篇
下一篇