【问题标题】:Converting a FLOAT into DATE in SQL?在 SQL 中将 FLOAT 转换为 DATE?
【发布时间】:2019-11-06 01:20:44
【问题描述】:

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

我们收到的数据具有这样的价值取向:YYYYMM 例如。 201911(今天的年+月)。但是,在 YYYYMM 列下传递的所有值都表示前一个月的第一天。 201911 = 2019 年 11 月 1 日。

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

当我尝试转换它时,它不会以日期格式显示它,因为我尝试在 DATEADD 函数中使用它,但它在我转换的字段上出错。

【问题讨论】:

  • 你为什么首先使用浮点值来存储日期?

标签: sql tsql ssms


【解决方案1】:

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

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

或者,使用datefromparts()

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

【讨论】:

  • 您提供的第一个建议适用于我的子查询。我不知道转换语句是可能的。万分感谢! :)
【解决方案2】:

请检查:

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

【讨论】:

    猜你喜欢
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多