如何在SQL-Server中将日期转换为ISO 8601?

时间:2013-05-08 06:55:44

标签: sql sql-server

我有一个日期格式为2006-09-08 14:39:41.000的列 我想使用此列创建视图,但我需要在ISO 8601中显示日期:yyyy-MM-ddThh:mm:ss.SSSZ 我该如何转换它?

3 个答案:

答案 0 :(得分:17)

ISO 8601的转换代码为126,您可以使用以下内容:

SELECT CONVERT(VARCHAR, DateColumn, 126) FROM Table

答案 1 :(得分:10)

请尝试以下操作:

SELECT CONVERT(char(30), '2006-09-08 14:39:41.000',126)

希望它有所帮助。

答案 2 :(得分:2)

以下示例显示当前日期和时间,使用CAST将当前日期和时间更改为字符数据类型,然后使用CONVERT以ISO 8901格式显示日期和时间。

SELECT 
   GETDATE() AS UnconvertedDateTime,
   CAST(GETDATE() AS nvarchar(30)) AS UsingCast,
   CONVERT(nvarchar(30), GETDATE(), 126) AS UsingConvertTo_ISO8601  ;
GO

这是结果集。

UnconvertedDateTime     UsingCast                      UsingConvertTo_ISO8601

----------------------- ------------------------------ ------------------------------

2006-04-18 09:58:04.570 Apr 18 2006 9:58AM            2006-04-18T09:58:04.570

(1 row(s) affected)

以下示例与前一示例大致相反。该示例将日期和时间显示为字符数据,使用CAST将字符数据更改为datetime数据类型,然后使用CONVERT将字符数据更改为datetime数据类型。

SELECT 
   '2006-04-04T15:50:59.997' AS UnconvertedText,
   CAST('2006-04-04T15:50:59.997' AS datetime) AS UsingCast,
   CONVERT(datetime, '2006-04-04T15:50:59.997', 126) AS UsingConvertFrom_ISO8601 ;
GO

这是结果集。

 UnconvertedText         UsingCast               UsingConvertFrom_ISO8601

    ----------------------- ----------------------- ------------------------

    2006-04-04T15:50:59.997 2006-04-04 15:50:59.997 2006-04-04 15:50:59.997

    (1 row(s) affected)