Convert函数应用格式化日期
SqlServer里convert函数格式化日期
格式:CONVERT(data_type,expression[,style])
说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到。
Date 和 Time 样式
如果 expression 为 date 或 time 数据类型,则 style 可以为下表中显示的值之一。 其他值作为 0 进行处理。 SQL Server 使用科威特算法来支持阿拉伯样式的日期格式。
不带世纪数位 (yy) (1) |
带世纪数位 (yyyy) |
标准 |
输入/输出 (3) |
---|---|---|---|
- |
0 或 100(1、2) |
默认 |
mon dd yyyy hh:miAM(或 PM) |
1 |
101 |
美国 |
mm/dd/yyyy |
2 |
102 |
ANSI |
yy.mm.dd |
3 |
103 |
英国/法国 |
dd/mm/yyyy |
4 |
104 |
德语 |
dd.mm.yy |
5 |
105 |
意大利语 |
dd-mm-yy |
6 |
106(1) |
- |
dd mon yy |
7 |
107(1) |
- |
Mon dd, yy |
8 |
108 |
- |
hh:mi:ss |
- |
9 或 109(1、2) |
默认格式 + 毫秒 |
mon dd yyyy hh:mi:ss:mmmAM(或 PM) |
10 |
110 |
美国 |
mm-dd-yy |
11 |
111 |
日本 |
yy/mm/dd |
12 |
112 |
ISO |
yymmdd yyyymmdd |
- |
13 或 113(1、2) |
欧洲默认格式 + 毫秒 |
dd mon yyyy hh:mi:ss:mmm(24h) |
14 |
114 |
- |
hh:mi:ss:mmm(24h) |
- |
20 或 120 (2) |
ODBC 规范 |
yyyy-mm-dd hh:mi:ss(24h) |
- |
21 或 121 (2) |
ODBC 规范(带毫秒) |
yyyy-mm-dd hh:mi:ss.mmm(24h) |
- |
126 (4) |
ISO8601 |
yyyy-mm-ddThh:mi:ss.mmm(无空格) |
- |
127(6, 7) |
带时区 Z 的 ISO8601。 |
yyyy-mm-ddThh:mi:ss.mmmZ (无空格) |
- |
130 (1,2) |
回历 (5) |
dd mon yyyy hh:mi:ss:mmmAM |
- |
131 (2) |
回历 (5) |
dd/mm/yy hh:mi:ss:mmmAM |
1 这些样式值返回不确定的结果。 包括所有 (yy)(不带世纪数位)样式和一部分 (yyyy)(带世纪数位)样式。
2 默认值(style0 或 100、9 或 109、13 或 113、20 或 120 以及 21 或 121)始终返回世纪数位 (yyyy)。
3 转换为 datetime 时输入;转换为字符数据时输出。
4 为用于 XML 而设计。 对于从 datetime 或 smalldatetime 到字符数据的转换,其输出格式如上一个表所述。
5 回历是有多种变体的日历系统。 SQL Server 使用科威特算法。
重要提示 |
---|
默认情况下,SQL Server 基于截止年份 2049 年来解释两位数的年份。 换言之,就是将两位数的年份 49 解释为 2049,将两位数的年份 50 解释为 1950。 许多客户端应用程序(如基于自动化对象的应用程序)都使用截止年份 2030 年。 SQL Server 提供了 two digit year cutoff 配置选项以更改 SQL Server 使用的截止年份,从而进行一致的日期处理。 建议您指定四位数年份。 |
6 仅支持从字符数据转换为 datetime 或 smalldatetime。 仅表示日期或时间成分的字符数据转换为 datetime 或 smalldatetime 数据类型时,未指定的时间成分设置为 00:00:00.000,未指定的日期成分设置为 1900-01-01。
7使用可选的时间区域指示符 (Z) 更便于将具有时区信息的 XML datetime 值映射到没有时区的 SQL Server datetime 值。 Z 是时区 UTC-0 的指示符。 其他时区则以 + 或 - 方向的 HH:MM 偏移量来指示。 例如:2006-12-12T23:45:12-08:00。
从 smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。 使用相应的 char 或 varchar 数据类型长度从 datetime 或 smalldatetime 值转换时,可截断不需要的日期部分。
从样式包含时间的字符数据转换为 datetimeoffset 时,将在结果末尾追加时区偏移量。
0 | Feb 22 2006 4:26PM | CONVERT(CHAR(19), CURRENT_TIMESTAMP, 0) |
1 | 02/22/06 | CONVERT(CHAR(8), CURRENT_TIMESTAMP, 1) |
2 | 06.02.22 | CONVERT(CHAR(8), CURRENT_TIMESTAMP, 2) |
3 | 22/02/06 | CONVERT(CHAR(8), CURRENT_TIMESTAMP, 3) |
4 | 22.02.06 | CONVERT(CHAR(8), CURRENT_TIMESTAMP, 4) |
5 | 22-02-06 | CONVERT(CHAR(8), CURRENT_TIMESTAMP, 5) |
6 | 22 Feb 06 | CONVERT(CHAR(9), CURRENT_TIMESTAMP, 6) |
7 | Feb 22, 06 | CONVERT(CHAR(10), CURRENT_TIMESTAMP, 7) |
8 | 16:26:08 | CONVERT(CHAR(8), CURRENT_TIMESTAMP, 8 ) |
9 | Feb 22 2006 4:26:08:020PM | CONVERT(CHAR(26), CURRENT_TIMESTAMP, 9) |
10 | 02-22-06 | CONVERT(CHAR(8), CURRENT_TIMESTAMP, 10) |
11 | 06/02/22 | CONVERT(CHAR(8), CURRENT_TIMESTAMP, 11) |
12 | 060222 | CONVERT(CHAR(6), CURRENT_TIMESTAMP, 12) |
13 | 22 Feb 2006 16:26:08:020 | CONVERT(CHAR(24), CURRENT_TIMESTAMP, 13) |
14 | 16:26:08:037 | CONVERT(CHAR(12), CURRENT_TIMESTAMP, 14) |
20 | 2006-02-22 16:26:08 | CONVERT(CHAR(19), CURRENT_TIMESTAMP, 20) |
21 | 2006-02-22 16:26:08.037 | CONVERT(CHAR(23), CURRENT_TIMESTAMP, 21) |
22 | 02/22/06 4:26:08 PM | CONVERT(CHAR(20), CURRENT_TIMESTAMP, 22) |
23 | 2006-02-22 | CONVERT(CHAR(10), CURRENT_TIMESTAMP, 23) |
24 | 16:26:08 | CONVERT(CHAR(8), CURRENT_TIMESTAMP, 24) |
25 | 2006-02-22 16:26:08.037 | CONVERT(CHAR(23), CURRENT_TIMESTAMP, 25) |
100 | Feb 22 2006 4:26PM | CONVERT(CHAR(19), CURRENT_TIMESTAMP, 100) |
101 | 02/22/2006 | CONVERT(CHAR(10), CURRENT_TIMESTAMP, 101) |
102 | 2006.02.22 | CONVERT(CHAR(10), CURRENT_TIMESTAMP, 102) |
103 | 22/02/2006 | CONVERT(CHAR(10), CURRENT_TIMESTAMP, 103) |
104 | 22.02.2006 | CONVERT(CHAR(10), CURRENT_TIMESTAMP, 104) |
105 | 22-02-2006 | CONVERT(CHAR(10), CURRENT_TIMESTAMP, 105) |
106 | 22 Feb 2006 | CONVERT(CHAR(11), CURRENT_TIMESTAMP, 106) |
107 | Feb 22, 2006 | CONVERT(CHAR(12), CURRENT_TIMESTAMP, 107) |
108 | 16:26:08 | CONVERT(CHAR(8), CURRENT_TIMESTAMP, 108) |
109 | Feb 22 2006 4:26:08:067PM | CONVERT(CHAR(26), CURRENT_TIMESTAMP, 109) |
110 | 02-22-2006 | CONVERT(CHAR(10), CURRENT_TIMESTAMP, 110) |
111 | 2006/02/22 | CONVERT(CHAR(10), CURRENT_TIMESTAMP, 111) |
112 | 20060222 | CONVERT(CHAR(8), CURRENT_TIMESTAMP, 112) |
113 | 22 Feb 2006 16:26:08:067 | CONVERT(CHAR(24), CURRENT_TIMESTAMP, 113) |
114 | 16:26:08:067 | CONVERT(CHAR(12), CURRENT_TIMESTAMP, 114) |
120 | 2006-02-22 16:26:08 | CONVERT(CHAR(19), CURRENT_TIMESTAMP, 120) |
121 | 2006-02-22 16:26:08.080 | CONVERT(CHAR(23), CURRENT_TIMESTAMP, 121) |
126 | 2006-02-22T16:26:08.080 | CONVERT(CHAR(23), CURRENT_TIMESTAMP, 126) |
127 | 2006-02-22T16:26:08.080 | CONVERT(CHAR(23), CURRENT_TIMESTAMP, 127) |
130 | 24 ???? 1427 4:26:08:080PM | CONVERT(CHAR(32), CURRENT_TIMESTAMP, 130) |
131 | 24/01/1427 4:26:08:080PM | CONVERT(CHAR(25), CURRENT_TIMESTAMP, 131) |