我有一个oracle表来维持截止时间。这里我们存储了各种证券的截止时间。目前我们是截止到1970年1月1日的默认日期部分。要求是用当前日期替换这个日期部分而不改变截止时间和时区部分。
答案 0 :(得分:1)
您可以计算今天和1970-01-01之间的天数,然后将其作为每日间隔添加到截止时间戳值:
create table my_table (cutoff timestamp with time zone);
insert into my_table values (timestamp '1970-01-01 18:00:00 -5:00');
select cutoff + numtodsinterval(trunc(sysdate) - date '1970-01-01', 'DAY') as adjusted
from my_table;
ADJUSTED
-----------------------------------
05-JUN-17 18.00.00.000000000 -05:00
或者如果您愿意,可以直接生成间隔(如@mathguy指出的那样):
select cutoff + (trunc(sysdate) - timestamp '1970-01-01 00:00:00') as adjusted
from my_table;
ADJUSTED
-------------------------
06-JUN-17 18:00:00 -05:00
当然,-05:00时区偏移会忽略夏令时,但这似乎与您的意图相同。