【问题标题】:How can I build a date from 3 columns of float datatype?如何从 3 列浮点数据类型构建日期?
【发布时间】:2022-01-11 15:30:44
【问题描述】:

我正在使用 SQL Server 2014,并且我有一个表 (t1),其中包含以下 3 列:

DAY   MONTH    YEAR
 2      11     2021
 1      10     2021
 12     10     2021
 22     09     2021

所有 3 列都有浮点数据类型。

用以下格式 (YYYY-MM-DD) 从这 3 列构建日期的 t-sql 代码是什么:

CREATEDDATE
2021-11-02
2021-10-01
2021-10-12
2021-09-22

我已尝试四处寻找与我类似的其他问题,但找不到解决方案。

任何帮助将不胜感激。

【问题讨论】:

  • 不过,我承认,float 对于 3 列的值仅包含整数的数据类型是一个糟糕的选择;其中 2 个必须是 <= 31,另一个必须是 < 10000tinyintsmallint 将是更合适的值。

标签: sql sql-server date tsql


【解决方案1】:

DATEFROMPARTS() 函数是一个选项(...返回映射到指定年、月和日值的日期值):

SELECT DATEFROMPARTS([YEAR], [MONTH], [DAY]) AS CREATEDATE
FROM (VALUES
    (2,  11, 2021),
    (1,  10, 2021),
    (12, 10, 2021),
    (22, 09, 2021)
) t ([DAY], [MONTH], [YEAR])

或者用实际的表:

SELECT DATEFROMPARTS([YEAR], [MONTH], [DAY]) AS CREATEDATE
FROM t1

【讨论】:

  • 谢谢。但是,是否应该对这些值进行硬编码?该表包含 100 多行。
  • @user3115933,只是生成测试数据。请改用... FROM Yourtable ...
猜你喜欢
  • 2017-02-02
  • 2018-12-13
  • 1970-01-01
  • 2019-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
相关资源
最近更新 更多