如何使用 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()