减少Oracle中列的"X"小时数

use*_*948 0 sql oracle date

我有一个表'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;
Run Code Online (Sandbox Code Playgroud)

谢谢

All*_*lan 5

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

Update ABC set TIME_THU = to_char(to_date(TIME_THU,'hh24:mi')-(4/24),'hh24:mi')
Run Code Online (Sandbox Code Playgroud)

这里需要注意的是,如果您的任何时间少于4:00,您可能会得到不正确的结果.我不太了解您的要求,无法知道该场景中的正确结果,因此我无法解决.


您可能还需要调查interval数据类型,这更适合存储与日期断开连接的时间.