SQL Server将字符串转成日期

在SQL Server中,我们经常需要处理日期和时间相关的数据。有时候,我们需要将字符串转换为日期数据类型,以便在数据库中进行日期和时间的计算和比较。本文将介绍如何使用SQL Server将字符串转换为日期,并提供相应的代码示例。

1. 使用CAST和CONVERT函数

在SQL Server中,我们可以使用CAST和CONVERT函数来将字符串转换为日期数据类型。

使用CAST函数

CAST函数可以将一个表达式转换为指定的数据类型。在将字符串转换为日期时,我们可以使用以下代码示例:

SELECT CAST('2022-01-01' AS DATE) AS ConvertedDate;

在上面的示例中,我们将字符串'2022-01-01'转换为日期类型,并将其命名为ConvertedDate。通过执行上述代码,我们将得到以下结果:

ConvertedDate
--------------
2022-01-01

使用CONVERT函数

CONVERT函数是SQL Server中用于转换数据类型的函数之一。它可以将一个表达式转换为指定的数据类型,并且可以提供额外的格式化选项。在将字符串转换为日期时,我们可以使用以下代码示例:

SELECT CONVERT(DATE, '2022-01-01') AS ConvertedDate;

在上面的示例中,我们将字符串'2022-01-01'转换为日期类型,并将其命名为ConvertedDate。通过执行上述代码,我们将得到以下结果:

ConvertedDate
--------------
2022-01-01

2. 使用日期格式化选项

在上面的示例中,我们将字符串转换为日期时使用了默认的日期格式。然而,我们也可以使用日期格式化选项来指定输入字符串的日期格式。以下是一些常用的日期格式化选项:

  • 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
  • 110: mm-dd-yyyy
  • 111: yyyy/mm/dd

下面是一个使用日期格式化选项的示例:

SELECT CONVERT(DATE, '01/01/2022', 101) AS ConvertedDate;

在上面的示例中,我们将字符串'01/01/2022'按照格式mm/dd/yyyy转换为日期类型,并将其命名为ConvertedDate。通过执行上述代码,我们将得到以下结果:

ConvertedDate
--------------
2022-01-01

3. 处理不同格式的字符串

在现实世界中,我们经常会面对不同格式的日期字符串。对于这种情况,我们可以使用CONVERT函数的格式化选项或使用字符串函数来处理不同格式的日期字符串。

使用格式化选项处理不同格式的字符串

以下是一个示例,演示如何使用日期格式化选项处理不同格式的日期字符串:

SELECT CONVERT(DATE, '2022/01/01', 111) AS ConvertedDate;

在上面的示例中,我们将字符串'2022/01/01'按照格式yyyy/mm/dd转换为日期类型,并将其命名为ConvertedDate。通过执行上述代码,我们将得到以下结果:

ConvertedDate
--------------
2022-01-01

使用字符串函数处理不同格式的字符串

除了使用格式化选项,我们还可以使用一些字符串函数来处理不同格式的日期字符串。以下是一个示例,演示如何使用字符串函数处理不同格式的日期字符串:

SELECT CAST(SUBSTRING('01-JAN-2022', 1, 2) + '-' +
            SUBSTRING('01-JAN-2022', 4, 3) + '-' +
            SUBSTRING('01-JAN-2022', 8, 4) AS DATE) AS ConvertedDate;

在上面的示例中,我们使用了字符串函数SUBSTRING来提取日期字符串中的年份、月份和日期,并将它们拼接成dd-MON-yyyy的格式。然后,我们使用CAST函数将该字符串转换为日期类型,并将其命名为ConvertedDate。通过执行上述代码,我们将得到以下结果:

ConvertedDate
--------------
2022-01-01

4.