2012-04-03 43 views
1

有没有办法只更新日期时间字段中的小时零件?如果不是,我如何更新Oracle中的时间部分?我试过了 - >如何更新oracle中d​​atetime字段中的“小时”部分?

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; 

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

+0

欢迎来到Stack Overflow!我冒昧给你格式化你的问题。将来,请在发布之前格式化您的问题。 – 2012-04-03 14:44:15

+0

“C_NAME”是DATE吗?这将如何更新时间?你是否希望忽略字符串的日期部分(即将'C_NAME'更新为'C_NAME'目前的12:31:00 AM?) – 2012-04-03 14:50:04

+0

是的Justin,C_Name是DateTime字段。不,我不会在这里想要忽略任何东西,正如yu所说12:31:00 AM这里只有“12”必须换成“00”,它应该是00:31:00 AM – palak 2012-04-03 15:16:32

回答

1

如果我知道我只想更新时间的一部分,我可能会在适当的位置将其转换为具有所需值的字符串,然后转换回日期。说我想要的分钟是“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; 

如果你希望时间部分相对于修改它的当前值(增加2小时或减去3秒为例)然后有一些选择的日期arithemtic。 Oracle文档对于这些事情非常有用。

+0

亚当,谢谢你的回复,但是这个没有当我这样做的时候我不会为我工作--->更新tab_name 设置C_Name = to_date(to_char(C_Name,'MM/DD/YYYY“00”:HH:SS'),'MM/DD/YYYY HH24: MI:SS')其中C_Name1 = 10484; ...小时我把它做成了“00”,它仍然将它保存为“12”......任何解决方案都是这样的? – palak 2012-04-03 15:09:02

+0

@palak - 你确定你只是没有以12小时的时间格式显示它,而不是24小时的时间格式吗?如果使用“HH24”格式掩码显示时间,则将以24小时时间格式显示,所以在午夜至凌晨1点之间,小时将为“00”。如果使用“HH”格式掩码显示时间,它将以12小时时间格式显示,因此小时总是在1到12之间。在数据库中,日期不以格式存储,它们是始终以相同的非人类可读封装二进制格式存储。日期必须转换为字符串才能成为人类可读的 – 2012-04-03 15:14:22

+0

Justin,在UI中,我显示LocalTime,但在数据库中,我将它保存为12小时格式,现在主要问题是 - >当datetime在6和上午6:30,在UI中它显示为PM.I认为在数据库I'll必须将其设置为HH24,正如yu所说。 – palak 2012-04-03 15:30:39

相关问题