Teradata 将 DATE 转换为午夜

Teradata Convert DATE to midnight

下面是原代码

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'

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

Invalid or missing expression 'E(5404):Datetime field overflow.'.

Teradata 中是否有将一天设置为午夜的命令?

谢谢

当您将日期投射到时间戳时,它被设置为午夜,然后您可以加上或减去一个时间间隔:

-- 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 有一个简化版本,您不必考虑 centi/milli/microseconds:

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