2012-04-03 21 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

相關問題