Sqlserver获取日期的问题

sqlserver 中一些常用的日期转换

一、日期格式转换:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Select CONVERT(varchar(100), GETDATE(), 0): 09 16 2021 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 09/16/21
Select CONVERT(varchar(100), GETDATE(), 2): 21.09.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/09/21
Select CONVERT(varchar(100), GETDATE(), 4): 16.09.21
Select CONVERT(varchar(100), GETDATE(), 5): 16-09-21
Select CONVERT(varchar(100), GETDATE(), 6): 16 09 21
Select CONVERT(varchar(100), GETDATE(), 7): 09 16, 21
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 09 16 2021 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 09-16-21
Select CONVERT(varchar(100), GETDATE(), 11): 21/09/16
Select CONVERT(varchar(100), GETDATE(), 12): 210916
Select CONVERT(varchar(100), GETDATE(), 13): 16 09 2021 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2021-09-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2021-09-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 09/16/21 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 2021-09-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2021-09-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 09 16 2021 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 09/16/2021
Select CONVERT(varchar(100), GETDATE(), 102): 2021.09.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/09/2021
Select CONVERT(varchar(100), GETDATE(), 104): 16.09.2021
Select CONVERT(varchar(100), GETDATE(), 109): 16-09-2021
Select CONVERT(varchar(100), GETDATE(), 121): 16 09 2021
Select CONVERT(varchar(100), GETDATE(), 107): 09 16, 2021
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 09 16 2021 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 09-16-2021
Select CONVERT(varchar(100), GETDATE(), 111): 2021/09/16
Select CONVERT(varchar(100), GETDATE(), 112): 20210916
Select CONVERT(varchar(100), GETDATE(), 113): 16 09 2021 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2021-09-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2021-09-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2021-09-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM

二、常用

1
2
3
Select CONVERT(varchar(100), GETDATE(), 23)	   --2021-09-16 
Select CONVERT(varchar(100), GETDATE(), 112) --20210916
Select CONVERT(varchar(100), GETDATE(), 120) --2021-09-16 11:32:55

–各国指定日期格式:

SELECT CONVERT(varchar(10),getdate(),120)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
101			美国		mm/dd/yyyy 
102 ANSI yy.mm.dd
103 英国/法国 dd/mm/yy
104 德国 dd.mm.yy
105 意大利 dd-mm-yy
106 dd mon yy
107 mon dd, yy
108 hh:mm:ss
109 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
110 美国 mm-dd-yy
111 日本 yy/mm/dd
112 ISO yymmdd
113 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
114 hh:mi:ss:mmm(24h)
120 yyyy-mm-dd hh:mm:ss[.fff]
121 yyyy-mm-dd hh:mm:ss[.fff]
126 ISO8601 yyyy-mm-dd Thh:mm:ss:mmm
130 科威特 dd mon yyyy hh:mi:ss:mmmAM
131 科威特 dd/mm/yy hh:mi:ss:mmmAM

三、DATENAME()

返回代表指定日期的指定日期部分的字符串。

语法
DATENAME ( datepart , date )

缩 写(Sql Server) Access 和 ASP 说明
year Yy yyyy 年 1753 ~ 9999
Quarter Qq q 季 1 ~ 4
Month Mm m 月1 ~ 12
Day of year Dy y 一年的日数,一年中的第几日 1-366
Day Dd d 日,1-31
Weekday Dw w 一周的日数,一周中的第几日 1-7
Week Wk ww 周,一年中的第几周 0 ~ 51
Hour Hh h 时0 ~ 23
Minute Mi n 分钟0 ~ 59
Second Ss s 秒 0 ~ 59
Millisecond Ms - 毫秒 0 ~ 999

select GETDATE() as ‘当前日期时间’,
DateName(year,GetDate())+’-‘+DateName(month,GetDate())+’-‘+DateName(day,GetDate()) as ‘当前日期’,
DateName(quarter,GetDate()) as ‘第几季度’,
DateName(week,GetDate()) as ‘一年中的第几周’,
DateName(DAYOFYEAR,GetDate()) as ‘一年中的第几天’,
DateName(year,GetDate()) as ‘年’,
DateName(month,GetDate()) as ‘月’,
DateName(day,GetDate()) as ‘日’,
DateName(hour,GetDate()) as ‘时’,
DateName(minute,GetDate()) as ‘分’,
DateName(second,GetDate()) as ‘秒’,
DateName(MILLISECOND,GetDate()) as ‘豪秒’,
DateName(WEEKDAY,GetDate()) as ‘星期几’

select GETDATE() as ‘当前日期时间’,
DatePart(year,GetDate())+’-‘+DatePart(month,GetDate())+’-‘+DatePart(day,GetDate()) as ‘当前日期’,
DatePart(quarter,GetDate()) as ‘第几季度’,
DatePart(week,GetDate()) as ‘一年中的第几周’,
DatePart(DAYOFYEAR,GetDate()) as ‘一年中的第几天’,
DatePart(year,GetDate()) as ‘年’,
DatePart(month,GetDate()) as ‘月’,
DatePart(day,GetDate()) as ‘日’,
DatePart(hour,GetDate()) as ‘时’,
DatePart(minute,GetDate()) as ‘分’,
DatePart(second,GetDate()) as ‘秒’,
DatePart(MILLISECOND,GetDate()) as ‘豪秒’,
DatePart(WEEKDAY,GetDate()) as ‘星期几’

实际问题以及解决办法

问题需要获取yyyymm格式的月份

1
select DateName(year,GetDate())+DateName(month,GetDate()) as '当月'

结果返回

1
2021September

经过查询,是数据库的编码字符不是中文(网络查到的原因,是否可信,待验证)
解决办法比较复杂,用其他方式实现

1
select CONVERT(VARCHAR(6),GETDATE(),112) AS  '当月'

结果返回

1
202109
继开 wechat
欢迎加我的微信,共同交流技术