CONVERT函数与CAST函数类似,也用于数据类型的转换,但它更加的灵活,可以在转换时指定格式化选项。
CONVERT( data_type [ (length) ] , expression [ ,style ] )
其中:
data_type:目标数据类型。
length:是可选的,用于指定转换后的数据类型的长度或精度。
expression:要转换的表达式或列。
style:是可选的,用于指定日期和时间数据类型的输出格式。
例如:将日期时间转换为字符类型,并指定日期格式
select CONVERT(varchar(30),GETDATE(),120);
对于日期和时间数据类型的输出格式,具体如下所示:
1. 日期格式化:
1:SELECT CONVERT(varchar(100), GETDATE(), 1) -> 07/12/24
2:SELECT CONVERT(varchar(100), GETDATE(), 2) -> 24.07.12
3:SELECT CONVERT(varchar(100), GETDATE(), 3) -> 12/07/24
4:SELECT CONVERT(varchar(100), GETDATE(), 4) -> 12.07.24
5:SELECT CONVERT(varchar(100), GETDATE(), 5) -> 12-07-24
6:SELECT CONVERT(varchar(100), GETDATE(), 6) -> 12 07 24
7:SELECT CONVERT(varchar(100), GETDATE(), 7) -> 07 12, 24
10:SELECT CONVERT(varchar(100), GETDATE(), 10) -> 07-12-24
11:SELECT CONVERT(varchar(100), GETDATE(), 11) -> 24/07/12
12:SELECT CONVERT(varchar(100), GETDATE(), 12) -> 240712
23:SELECT CONVERT(varchar(100), GETDATE(), 23) -> 2024-07-12
101:CONVERT(varchar, GETDATE(), 101) -> 07/09/2024
102 :CONVERT(varchar, GETDATE(), 102) -> 2024.07.09
103 :CONVERT(varchar, GETDATE(), 103) -> 09/07/2024
104 :CONVERT(varchar, GETDATE(), 104) -> 09.07.2024
105 :CONVERT(varchar, GETDATE(), 105) -> 09-07-2024
106 :CONVERT(varchar, GETDATE(), 106) -> 09 Jul 2024
107:CONVERT(varchar, GETDATE(), 107) -> Jul 09, 2024
110 :CONVERT(varchar, GETDATE(), 110) -> 07-09-2024
111 :CONVERT(varchar, GETDATE(), 111) -> 2024/07/09
112 :CONVERT(varchar, GETDATE(), 112) -> 20240709
2. 时间格式化:
8:SELECT CONVERT(varchar(100), GETDATE(), 8) -> 14:30:00
14:SELECT CONVERT(varchar(100), GETDATE(), 14) -> 14:30:00:000
24:SELECT CONVERT(varchar(100), GETDATE(), 24) -> 14:30:00
108:CONVERT(varchar, GETDATE(), 108) -> 14:30:59
113:CONVERT(varchar, GETDATE(), 113) -> 14:30:59:123
114 (SQL Server 特有):CONVERT(varchar, GETDATE(), 114) -> 14:30:59:1233.特殊格式化:
0:SELECT CONVERT(varchar(100), GETDATE(), 0) -> 07 12 2024 02:30PM
9:SELECT CONVERT(varchar(100), GETDATE(), 9) -> 07 12 2024 02:30:00:000PM
13:SELECT CONVERT(varchar(100), GETDATE(), 13) -> 12 07 2024 14:30:00:000
20:SELECT CONVERT(varchar(100), GETDATE(), 20) -> 2024-07-12 14:30:00
21:SELECT CONVERT(varchar(100), GETDATE(), 21) -> 2024-07-12 14:30:00.157
22:SELECT CONVERT(varchar(100), GETDATE(), 22) -> 07/12/24 02:30:00 PM
25:SELECT CONVERT(varchar(100), GETDATE(), 25) -> 2024-07-12 14:30:00.250
100:SELECT CONVERT(varchar(100), GETDATE(), 100) -> 07 12 2024 02:30PM
109 :CONVERT(varchar, GETDATE(), 109) -> 07 09 2024 14:30:59:123
120:CONVERT(varchar, GETDATE(), 120) -> 2024-07-09 14:30:59
121:CONVERT(varchar, GETDATE(), 121) -> 2024-07-09 14:30:59:123
注:不同版本的 SQL Server 可能会有微妙的差异,尤其是在处理日期格式化时。如有不同则为版本不同。
关于日期和时间的表示如下:
1. 日期:
- yyyy: 表示四位数的年份,例如
2024。
- yy: 表示两位数的年份,例如
24
表示2024年。- mm: 表示两位数的月份,例如
07
表示七月。- MMM: 表示缩写的月份,例如
Jan
表示一月。- MMMM: 表示完整的月份名称,例如
January
表示一月。- dd: 表示两位数的日期,例如
09
表示九号。2. 时间:
- hh: 表示两位数的小时(12小时制),例如
03
表示上午3点。- HH: 表示两位数的小时(24小时制),例如
13
表示下午1点。- mi: 表示两位数的分钟,例如
15
表示15分钟。- mm: 与
mi
相同,表示分钟数,例如30
表示30分钟。- ss: 表示两位数的秒,例如
30
表示30秒。- mmm:ss后跟mmm表示毫秒,例如hh:mi:ss:mmm (毫秒)
CONVERT函数与CAST函数的区别:
1. CAST函数是ANSI SQL标准的一部分,在不同数据库系统中都有支持。
2. CONVERT是SQL Server中特有的函数,不具备跨数据库的通用性。
3. 在涉及简单的数据类型转换(如整数到字符)时,CAST函数和CONVERT函数的性能差异可以忽略不计。但涉及到复杂的日期格式化或者其他特殊需求时,CONVERT函数更加合适。