如何使用 CONVERT() 在 SQL Server 中将字符串转换为日期/时间
在 SQL Server 中,可以使用该函数将一种数据类型的表达式转换为另一种数据类型。因此,如果您需要将字符串转换为日期/时间格式,此函数可以提供帮助。CONVERT()
本文包含演示其用法的示例。
语法
语法是这样的:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
这些参数定义如下:
expression
任何有效的表达式。
data_type
目标数据类型。这包括 xml、bigint 和 sql_variant。不能使用别名数据类型。
length
一个可选整数,它指定目标数据类型的长度。默认值为 。30
style
一个整数表达式,它指定函数将如何转换。对于 NULL 的样式值,返回 NULL。 确定范围。CONVERT()expressiondata_type
示例 1 – 转换为日期数据类型
在此示例中,我们将字符串转换为日期数据类型(我们通过将其用作第一个参数来指定)。date
SELECT CONVERT(date, ‘20 Dec 2018’) AS Result;
输出:
+------------+
| Result |
|------------|
| 2018-12-20 |
+------------+当然,字符串需要采用能够转换为指定数据类型的样式,否则会出现错误:
SELECT CONVERT(date, ‘Homer’) AS Result;
输出:
Conversion failed when converting date and/or time from character string.示例 2 – 转换为日期时间数据类型
在此示例中,我们转换为日期时间数据类型:
SELECT CONVERT(datetime, ‘20 Dec 2018’) AS Result;
输出:
+-------------------------+
| Result |
|-------------------------|
| 2018-12-20 00:00:00.000 |
+-------------------------+您还可以指定时间:
SELECT CONVERT(datetime, ‘2pm 20 Dec 2018’) AS Result;
输出:
+-------------------------+
| Result |
|-------------------------|
| 2018-12-20 14:00:00.000 |
+-------------------------+示例 3 – 转换为日期时间2数据类型
在此示例中,我们转换为 datetime2 数据类型:
SELECT CONVERT(datetime2, ‘20 Dec 2018’) AS Result;
输出:
+-----------------------------+
| Result |
|-----------------------------|
| 2018-12-20 00:00:00.0000000 |
+-----------------------------+示例 4 – 转换为日期时间偏移量数据类型
在此示例中,我们转换为日期时间偏移量数据类型:
SELECT CONVERT(datetimeoffset, ‘20 Dec 2018’) AS Result;
输出:
+------------------------------------+
| Result |
|------------------------------------|
| 2018-12-20 00:00:00.0000000 +00:00 |
+------------------------------------+示例 5 – 转换为小日期时间数据类型
在此示例中,我们转换为 smalldatetime 数据类型:
SELECT CONVERT(smalldatetime, ‘20 Dec 2018’) AS Result;
输出:
+---------------------+
| Result |
|---------------------|
| 2018-12-20 00:00:00 |
+---------------------+示例 6 – 转换为时间数据类型
在此示例中,我们转换为时间数据类型:
SELECT CONVERT(time, ‘20 Dec 2018’) AS Result;
输出:
+----------+
| Result |
|----------|
| 00:00:00 |
+----------+在这个示例中,我们指定了一个日期,但没有指定时间,因此它返回为 .下面是另一个我们实际指定时间的示例:00:00:00
SELECT CONVERT(time, ‘2pm’) AS Result;
输出:
+----------+
| Result |
|----------|
| 14:00:00 |
+----------+但是如果我们添加日期,我们会收到一个错误(与之前转换为日期时间时的示例不同):
SELECT CONVERT(time, ‘2pm 20 Dec 2018’) AS Result;
输出:
Conversion failed when converting date and/or time from character string.因此,在这种情况下,您需要转换为日期时间或小日期时间。
示例 7 – 省略日期
如果在转换为日期时间或小日期时间数据类型时省略日期,它将返回为日期:1900-01-01
SELECT CONVERT(datetime, ‘2pm’) AS Result;
输出:
+-------------------------+
| Result |
|-------------------------|
| 1900-01-01 14:00:00.000 |
+-------------------------+如果在尝试将字符串转换为日期时遇到错误,请尝试使用 PARSE() 函数。它在某些情况下不起作用。CONVERT()
您可能还想查看该函数,这是一种在数据类型之间进行转换的 ANSI SQL 标准方法。以下是使用 CAST() 将字符串转换为日期/时间的方法。CAST()