我有个Oracle TIMESTAMP
列,其中包含以下值:
2019-11-05 15:16:31
我想更新这些行,将日期组件从2019年11月5日更改为2020年6月8日,而不更改时间组件。我知道下面这只是一个数字值,没有年/月/日/小时/分/秒等的分隔。目的是使上述值变成:
2020-06-08 15:16:31
我能想到的最好办法是:
update mytable set tscolumn = tscolumn + 216
(当然有适当的where子句)
它可以工作,但不是特别漂亮,依赖于timeanddate.com
2条答案
按热度按时间nnvyjq4y1#
使用
TIMESTAMP
literal,其中时间设置为午夜,然后将行中的时间分量相加,可以通过减去TRUNC
从非截断列值中删除列值:(
DAY TO SECOND
因此减法是作为INTERVAL
数据类型,而不是oracle默认的数字差异。)对于样本数据:
输出:
db<>在这里摆弄
yqlxgs2m2#
一个选项使用日期艺术:
文字日期之间的减法表示两个日期之间的天数。
注意,我添加了一个
where
子句,使其仅适用于日期部分为的列'2019-11-05'
-现在还不清楚你想在其他日期做什么。如果你真的有
timestamp
列,如果要保留分数秒,则要使用间隔: