SQL Server 2012 - 将CYYMMDD日期转换为YYYYMMDD

问题描述:

我有一个表格,其中日期存储为CYYMMDD(其中C是世纪(当前存储为整数))的日期略多于200,000个。例如,1992年12月5日将显示为1921205,2016年4月25日将显示为2160425。我需要以YYYMMDD格式在新表格中显示这些结果。因此,对于前面的两个示例,它将是1992120520160425。我曾尝试使用SQL Server 2012 - 将CYYMMDD日期转换为YYYYMMDD

CONVERT(VARCHAR(8),[DATE], 112) 

这不会给出错误,但它也不会执行转换,因此我所有的日期看起来都一样。我究竟做错了什么?

+2

为什么不值只是存储作为一个实际的'DATE'数据类型,而不是将其转换为'VARCHAR'? – Siyual

+0

当我尝试通过使用'CONVERT(DATE,[DATE],112)转换为日期'时,出现以下错误:不允许将数据类型int显式转换为日期。 – mdarr

你需要如下分割你的数值:

DATEFROMPARTS(1800 + FLOOR([DATE]/10000) , FLOOR([DATE]/100)%100, [DATE]%100)

+0

'[Date]'是一个'INT'数据类型,而不是'VARCHAR'。 – Siyual

+0

谢谢!这对我有用! – mdarr