SQL CONVERT() 函数
SQL CONVERT() 函数将一个表达式从一种数据类型转换为另一种数据类型。如果转换成功,该函数返回转换后的值;否则,会产生一个错误。
除了 style 选项外,CONVERT() 函数与 CAST() 函数等效。尽管 CAST() 是 ANSI SQL 方法的组成部分,可在许多其他数据库中使用,但 CONVERT() 是 SQL Server 特有的,不适用于其他数据库。
语法
以下是 SQL CONVERT() 函数的语法:
CONVERT(data_type(length), expression, style)
参数
此函数只接受四个参数。具体如下所述:
- data_type − 需要转换的有效表达式。
-
length − 结果数据类型的长度,可选。
-
expression − 要将表达式转换为的数据类型。
-
style − 用于结果的格式,可选。
样式值可以是以下任意值,让我们依次看一下:
日期和时间 的转换样式 –
样式 | 标准 | 结果 |
---|---|---|
100 | datetime和smalldatetime | 月 日 年 时:分AM(或PM) |
101 | 美国 | 月/日/年 |
102 | ANSI | 年.月.日 |
103 | 英式/法式 | 日/月/年 |
104 | 德国 | 日.月.年 |
105 | -- | 日 月 年 |
106 | -- | 月 日, 年 |
107 | -- | 月 日, 年 |
108 | -- | hh:mi:ss |
109 | 默认 + 毫秒 | 月-日-年 hh:mi:ss:mmmAM(或PM) |
110 | 美国 | 月-日-年 |
111 | 日本 | 年/月/日 |
112 | ISO | 年月日 |
113 | 欧洲默认 + 毫秒 | 日 月 年 hh:mi:ss:mmm(24小时制) |
114 | -- | hh:mi:ss:mmm(24小时制) |
120 | ODBC规范 | 年-月-日 小时:分钟:秒(24小时制) |
121 | ODBC规范(带毫秒)适用于时间、日期、datetime2和datetimeoffset | yyyy-mm-dd hh:mi:ss.mmm (24h) |
126 | ISO8601 | yyyy-mm-ddThh:mi:ss.mmm (无空格) |
127 | ISO8601 | yyyy-MM-ddThh:mm:ss.fffZ (无空格) |
浮点数和实数 转换的样式 –
风格 | 结果 |
---|---|
0 | 最多6位数。当适用时,使用科学计数法。 |
1 | 8位数。始终使用科学计数法。 |
2 | 16位数。始终使用科学计数法。 |
货币和小货币 转换的风格为−
样式 | 结果 |
---|---|
0 | 无逗号和两位小数。示例:28000.54。 |
1 | 有逗号和两位小数。示例:24,222.63。 |
2 | 无逗号和四位小数。示例:12345.6789。 |
126 | 当转换为char(n)或varchar(n)时等同于2。 |
示例
让我们尝试使用以下查询将十进制转换为整数−
SELECT CONVERT(int, 123.34) AS Result;
输出
当我们执行上述查询时,输出如下所示:
+--------------------------+
| Result |
+--------------------------+
| 123 |
+--------------------------+
示例
让我们使用以下查询将表达式转换为varchar类型-
SELECT CONVERT(varchar, 12344.34) AS varchar;
输出
执行以上查询时,输出显示如下 –
+--------------------------+
| varchar |
+--------------------------+
| 12344.34 |
+--------------------------+
示例
在下面的示例中,我们将使用以下查询将表达式转换为日期时间。
SELECT CONVERT(datetime, '2023-02-23') AS datetime;
输出
上述查询的输出如下所示−
+--------------------------+
| datetime |
+--------------------------+
| 2023-02-23 00:00:00.000 |
+--------------------------+
示例
看下面的示例,我们将使用以下查询将浮点数转换为整数。
DECLARE @FLOAT AS Float
SET @FLOAT = 12344.567
SELECT CONVERT(int, @FLOAT) AS ConvertedResult;
输出
如果我们编译并运行上面的查询,结果如下所示 –
+------------------------------------+
| ConvertedResult|
+------------------------------------+
| 12344 |
+------------------------------------+
示例
让我们看看另一种情况,我们将使用以下查询将浮点值更改为varchar –
DECLARE @FLOAT AS Float
SET @FLOAT = 1235.5687
SELECT CONVERT(varchar, @FLOAT) AS ConvertedResult;
输出
执行以上查询后,将生成如下所示的输出结果:
+------------------------------------+
| ConvertedResult|
+------------------------------------+
| 1235.57 |
+------------------------------------+
示例
让我们考虑另一个示例,我们要通过运行以下查询将货币转换为varchar类型。
DECLARE @MONEY AS MONEY=$1234.56
SELECT CONVERT(Varchar,@MONEY,0) AS Style_0,
CONVERT(Varchar,@MONEY,1) AS Style_1;
输出
查询执行后,将生成如下所示的输出结果 –
+-----------------------------------+-------------------------------------+
| Style_0 | Style_1 |
+-----------------------------------+-------------------------------------+
| 1234.56 | 1,234.56 |
+-----------------------------------+-------------------------------------+
示例
在下面的示例中,我们将使用CONVERT()函数和GETDATE()函数来检索当前日期和时间,使用以下查询语句:
SELECT CONVERT(VARCHAR(20),GETDATE())AS Result;
输出
当查询执行时,它将生成如下所示的输出:
+------------------------------------+
| Result|
+------------------------------------+
| Feb 23 2023 11:19AM |
+------------------------------------+
示例
考虑另一种情况,我们将使用GETDATE()与CONVERT()函数,并通过以下查询来指定样式-
SELECT CONVERT(VARCHAR(11),GETDATE(),106) AS Result;
输出
当查询被执行时,它将生成如下所示的输出:
+------------------------------------+
| Result|
+------------------------------------+
| 23 Feb 2023 |
+------------------------------------+