【发布时间】:2017-10-23 20:52:48
【问题描述】:
我有一个 teradata 表 ABC 。我在表中有一个 PERIOD 数据类型的列(列的名称是 ef_dtm)。每当周期列的起始界限为“12/31/9999”时,我需要更新周期列的起始界限(减去 1 天)。
我正在使用以下查询。但它是在说
间隔文字无效。
你能建议我一个更新查询吗?
Nonsequenced validtime
update ABC
set ef_dtm = PERIOD(CAST(end(ef_dtm) as Date) -INTERVAL '-1' DAY , end(ef_dtm))
where begin(ef_dtm) = '12/31/9999'
【问题讨论】:
-
嗯,你不能有一个从 '12/31/9999' 开始的句点,因为结束必须大于开始。顺便说一句,编写 DATE 文字只有一种可靠的方法:
DATE '9999-12-31' -
当前在数据库中的期间开始日期小于期间结束日期。期间结束日期的时间戳为 23:59。就像这样 Period start date 是 12/31/9999 00:00:00.000 , period end date 是 12/31/9999 23:59:00.0000 。我需要将期间开始日期更新为 12/30/9999 00:00:00.0000 并且期间结束日期可以保持不变。
标签: teradata