从 Oracle 中的列减少 'X' 小时

Reduce 'X' hours from a column in Oracle

我有一个 table 'ABC',其列 TIME_THU 的值类似于 04:00、04:02、04:03。该列是 VARCHAR2,我需要将列值减少到 00:00、00:02、00:03,即将它们减少 04 小时。

需要使用 UPDATE 查询对此进行更改。

有点像,

Update ABC set TIME_THU  = TIME_THU -4;

谢谢

鉴于您的数据,最好的选择似乎是转换为日期,减去小时数,然后再转换回来。

Update ABC set TIME_THU = to_char(to_date(TIME_THU,'hh24:mi')-(4/24),'hh24:mi')

这里需要注意的是,如果您的任何时间少于 4:00,您可能会得到不正确的结果。我对你们的要求不够了解,无法知道在那种情况下正确的结果是什么,所以我无法解决它。


您可能还想研究 interval 数据类型,它更适合存储与日期断开连接的时间。