Sql Server 字符串到日期的转换

作者:编程家 分类: sqlserver 时间:2025-06-17

Sql Server 字符串到日期的转换

在 Sql Server 中,我们经常需要将字符串转换为日期类型,以便在查询和计算中进行正确的日期处理。这种转换可以通过使用内置的日期函数和格式化选项来实现。本文将介绍如何在 Sql Server 中进行字符串到日期的转换,并提供一些常见的案例代码。

1. 使用 CONVERT 函数

在 Sql Server 中,可以使用 CONVERT 函数将字符串转换为日期类型。该函数的语法如下:

CONVERT(data_type, expression, style)

其中,data_type 是目标数据类型,expression 是要转换的字符串,style 是日期格式化选项。

例如,要将字符串 '2022-01-01' 转换为日期类型,可以使用以下代码:

sql

DECLARE @date date;

SET @date = CONVERT(date, '2022-01-01', 121);

在上面的代码中,data_type 被设置为 date,expression 被设置为 '2022-01-01',style 被设置为 121。style 121 表示 yyyy-mm-dd 格式的日期。

2. 使用 TRY_CONVERT 函数

在某些情况下,字符串的格式可能不符合指定的日期格式,这时使用 CONVERT 函数会导致错误。为了避免这种情况,可以使用 TRY_CONVERT 函数。该函数的语法如下:

TRY_CONVERT(data_type, expression, style)

TRY_CONVERT 函数会尝试将 expression 转换为 data_type 类型,如果成功则返回转换后的值,如果失败则返回 NULL。

例如,要将字符串 '2022-01-01' 转换为日期类型,可以使用以下代码:

sql

DECLARE @date date;

SET @date = TRY_CONVERT(date, '2022-01-01', 121);

在上面的代码中,data_type 被设置为 date,expression 被设置为 '2022-01-01',style 被设置为 121。

3. 使用 CAST 函数

除了 CONVERT 和 TRY_CONVERT 函数,还可以使用 CAST 函数将字符串转换为日期类型。该函数的语法如下:

CAST(expression AS data_type)

其中,expression 是要转换的字符串,data_type 是目标数据类型。

例如,要将字符串 '2022-01-01' 转换为日期类型,可以使用以下代码:

sql

DECLARE @date date;

SET @date = CAST('2022-01-01' AS date);

在上面的代码中,expression 被设置为 '2022-01-01',data_type 被设置为 date。

4. 日期格式化选项

在 CONVERT 和 TRY_CONVERT 函数中,可以使用不同的日期格式化选项来指定字符串的格式。以下是一些常见的日期格式化选项:

- 101: mm/dd/yyyy

- 102: yyyy.mm.dd

- 103: dd/mm/yyyy

- 104: dd.mm.yyyy

- 105: dd-mm-yyyy

- 106: dd mon yyyy

- 107: Mon dd, yyyy

- 108: hh:mi:ss

- 109: mon dd yyyy hh:mi:ss:mmmAM (or PM)

- 110: mm-dd-yyyy

- 111: yyyy/mm/dd

- 112: yyyymmdd

- 120: yyyy-mm-dd hh:mi:ss

- 121: yyyy-mm-dd hh:mi:ss.mmm

- 126: yyyy-mm-ddThh:mi:ss.mmm

根据需要选择合适的日期格式化选项来进行字符串到日期的转换。

5. 案例代码

以下是一些常见的案例代码,演示了如何将字符串转换为日期类型:

- 将字符串 '2022-01-01' 转换为日期类型:

sql

DECLARE @date date;

SET @date = CONVERT(date, '2022-01-01', 121);

- 将字符串 '2022/01/01' 转换为日期类型:

sql

DECLARE @date date;

SET @date = CONVERT(date, '2022/01/01', 111);

- 将字符串 '01-Jan-2022' 转换为日期类型:

sql

DECLARE @date date;

SET @date = CONVERT(date, '01-Jan-2022', 106);

- 将字符串 '20220101' 转换为日期类型:

sql

DECLARE @date date;

SET @date = CONVERT(date, '20220101', 112);

通过以上案例代码,可以根据需要将不同格式的字符串转换为日期类型,以便在 Sql Server 中进行日期处理和查询。

在 Sql Server 中,通过使用 CONVERT、TRY_CONVERT 或 CAST 函数,可以将字符串转换为日期类型。在转换过程中,需要指定目标数据类型和适当的日期格式化选项。通过正确地进行字符串到日期的转换,可以确保在查询和计算中得到正确的日期处理结果。