在 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 输出
我想知道如何将 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 输出