转换日期格式

时间:2015-02-04 08:53:00

标签: sql sql-server

我有一个类似

的日期格式
'2003-11-27 00:00:00.000' 

如何使用SQL SERVER将其转换为YYYYMMDD,如20031127?

4 个答案:

答案 0 :(得分:2)

要根据ISO标准转换日期,您可以写为:

SELECT CONVERT (VARCHAR(8), GETDATE(),112) as [YYYYMMDD]

答案 1 :(得分:2)

SELECT CONVERT (VARCHAR(8), cast('2003-11-27 00:00:00.000' as datetime), 112)

答案 2 :(得分:1)

取决于您的日期宣告方式。

DECLARE @date datetime = '2003-11-27T00:00:00.000' -- datetime
DECLARE @date2 char(23) = '2003-11-27 00:00:00.000' -- char(23)


SELECT
  convert(char(8), @date, 112) datetimeconvert, 
  convert(char(8), convert(datetime, @date2, 121), 112) charconvert

结果:

datetimeconvert charconvert
20031127        20031127

答案 3 :(得分:1)

SQL Server中的日期类型没有任何格式,它们是二进制类型。格式仅在将它们转换为文本或尝试解析文本文字时适用。

您没有指定您发布的价值,或者您想用它做什么。有几种可能性:

  • 您想要截断datetime字段的时间部分。然后只需cast(myField as date)
  • 您想要创建一个文本字符串,其中包含datetimedate字段的日期部分:FORMAT(myField,'yyyyMMdd')CONVERT(varchar(8),myField,112)。 FORMAT提供了与.NET的String.Format一样多的灵活性,但在这种情况下CONVERT就足够了。
  • 您想将一个文字文字转换为另一个:FORMAT(CONVERT(date,'2003-11-27 00:00:00.000',121),'yyyyMMdd')。您可以将原始字符串转换为日期,然后根据需要对其进行格式化。