【问题标题】:Teradata Convert DATE to midnightTeradata 将 DATE 转换为午夜
【发布时间】:2015-09-02 16:22:26
【问题描述】:

以下是原代码

convert(datetime,
            (substring(convert(varchar(26),
            convert(datetime,getdate())),1,12) +
            '23:59:59:996'))

输出 = 6/17/2015 11:59:59.996

我在下面将其转换为 Teradata

CAST(CURRENT_TIMESTAMP AS DATE FORMAT 'MM/DD/YYYY') || ' 23:59:59:999990'

但是在编译我的存储过程时,它会在下面产生一个错误

表达式“E(5404):Datetime field overflow.”无效或缺失。

Teradata 中是否有将日期设置为午夜的命令?

谢谢

【问题讨论】:

    标签: date time teradata


    【解决方案1】:

    当您将日期转换为 tamestamp 时,它会设置为午夜,然后您可以添加或减去间隔:

    -- tomorrow minus a millisecond
    CAST(CURRENT_DATE +1 AS TIMESTAMP(3)) - INTERVAL '0.001' SECOND
    
    -- or today plus almost 24 hours
    CAST(CURRENT_DATE AS TIMESTAMP(3)) + INTERVAL '23:59:59.999' HOUR TO SECOND
    

    使用PRIOR 有一个简化版本,您不必考虑厘/毫/微秒:

    -- tomorrow minus one unit of time (based on the input datatype)
    Prior(Cast(Current_Date+1 AS TIMESTAMP(3)))
    

    【讨论】:

      猜你喜欢
      • 2021-01-13
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 2011-10-14
      • 1970-01-01
      • 2016-07-06
      • 2018-07-10
      相关资源
      最近更新 更多