如何仅更新oracle中日期时间字段中的“小时”部分?

pal*_*lak 2 oracle10g

有没有办法只更新 DateTime 字段中的 Hour 部分?如果没有,如何更新 Oracle 中的时间部分?我试过这个->

update tab_name 
set C_Name=to_date('04/03/2012 00:31:00','MM/DD/YYYY HH:MI:SS AM') 
where C_Name1=10484;  
Run Code Online (Sandbox Code Playgroud)

没有工作,因为我在小时部分更新“00”。

Ada*_*kes 5

如果我知道我只想更新一部分时间,我可能会在适当的位置转换为具有我想要的值的字符串,然后转换回日期。假设我希望分钟是“31”:

update tab_name 
set C_Name=
  to_date( 
    to_char(C_Name, 'MM/DD/YYYY HH24:"31":SS'),
    'MM/DD/YYYY HH24:MI:SS'
  ) 
where C_Name1=10484;  
Run Code Online (Sandbox Code Playgroud)

如果要修改相对于其当前值的时间部分(例如,增加 2 小时或减少 3 秒),则有一些日期算术选择。Oracle 文档非常适合这些事情。