在 SQL 中将 FLOAT 转换为 DATE?

Converting a FLOAT into DATE in SQL?

我想知道如何将 FLOAT 值正确转换为 DATE?

我们收到的数据具有这样的面向值:YYYYMM ex。 201911(今天的年 + 月)。但是,在 YYYYMM 列下传递的所有值都表示前一个月的第一天。 201911 = 11/01/2019.

RIGHT([DATE],2) + '/01/' + LEFT([DATE],4) AS [DATE]

当我尝试转换它时,它没有将它放入日期格式,因为我尝试在 DATEADD 函数中使用它,但它在我转换的字段上出错。

如果您的值为 YYYYMM,那么一种简单的方法是先转换为字符串,然后再转换为日期:

select convert(date, convert(varchar(255), yyyymm) + '01')

或者,使用 datefromparts():

select datefromparts(floor(yyyymm / 100), yyyymm % 100, 1)

请检查:

DECLARE @Date AS FLOAT;
SET @Date = 201911;

SELECT CONVERT(VARCHAR, CAST(CAST(LEFT(@Date,4)  AS VARCHAR(4)) + '/01' + '/' + CAST(RIGHT(@Date,2)  AS VARCHAR(2))  AS DATE) , 103) As CREATEDDATE

将于 11/01/2019 输出