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