2012-04-05 63 views
2

我真的試圖在日期時間字段更新時間更新時間Oracle數據庫

UPDATE table_name 
    SET col_name=to_DATE('04/02/2012 00:12:00','MM/DD/YYYY HH24:MI:SS') 
WHERE col_name1='rer'; 

在DB更新後,output是這樣

'04/02/2012 12:12:00'

額外12它加在小時字段,
我怎樣才能使這個不添加額外12小時字段?

+0

如何顯示輸出(您使用什麼查詢)? – 2012-04-06 08:35:33

+0

marcin,只是我使用的select語句,如「從tab_name中選擇col_name」,後面加上where條件。 – palak 2012-04-09 05:54:43

回答

3

更新聲明是確定的。它不會爲您的日期列添加任何「額外12」。您遇到的唯一問題是顯示值。日期列不以任何特定格式(如「MM/DD/YYYY HH24:MI:SS」)存儲其值,它包含二進制數據。當你與這樣的語句查詢您的表像

SELECT col_name FROM table_name 

使用會話的NLS_DATE_FORMAT,這可能是「:MI:SS MM/DD/YYYY HH」顯示的日期。在這種格式中,你的日期顯示爲'04/02/2012 12:12:00'。如果您在會議

ALTER SESSION SET NLS_DATE_FORMAT='MM/DD/YYYY HH24:MI:SS'; 

運行下面的語句,然後查詢

SELECT col_name FROM table_name 

你會看到你想要的格式的日期。其他方式是使用TO_CHAR,如

SELECT TO_CHAR(col_name, ''MM/DD/YYYY HH24:MI:SS') FROM table_name 
+0

Marcin,首先感謝你的回覆,即使在運行你的alter語句後,我仍然有相同的日期格式,我試過這個 - > SELECT TO_DATE('03/24/2012 00:30:00','MM/DD/YYYY HH24:MI:SS')FROM DUAL ..它仍然只顯示小時數爲「12」 – palak 2012-04-09 07:37:12

+0

您使用什麼工具執行這些查詢(SQL * Plus?PL/SQL Developer?SQL Developer?other?) – 2012-04-10 06:56:46

0

只是猜測,用於格式化輸出的字符串可能有錯誤,'24'缺少'HH24'。既然你只有上面列出的輸入(而不是輸出)的格式字符串,我不能說是否是這種情況。這是我的意思的一個例子。

查詢1:

select to_char(to_date('04/02/2012 00:12:00','MM/DD/YYYY HH24:MI:SS'), 
    'mm/dd/yyyy HH24:mi:ss') from dual; 

結果1:

04/02/2012 00:12:00 

問題2:

select to_char(to_date('04/02/2012 00:12:00','MM/DD/YYYY HH24:MI:SS'), 
    'mm/dd/yyyy HH:mi:ss') from dual; 

結果2:

04/02/2012 12:12:00 

要清楚,我想解決你的問題可能是檢查的格式在你的SELECT語句,並選擇您的數據是這樣的:

SELECT to_char(col_name,'MM/DD/YYYY HH24:MI:SS') FROM table_name WHERE col_name1='rer'; 
+0

:我不認爲這不是這樣,雖然它給你正確的答案,但在我嘗試執行更新時使用'hh:mi:ss'和時間00:12:00它給了我'ORA-08149小時必須在1和12之間' – 2012-04-05 20:16:38

+0

我不是說他在更新語句中使用像hh:mi:ss這樣的格式字符串,我猜測他可能會在select語句中使用它沒有在上面顯示。在這種情況下,他會在表格中存儲正確的時間,但是當他使用select和to_char查看時,它的格式不正確。我不認爲你會從'tableName#'中選擇to_char(#dateTimeField#,'mm/dd/yyyy HH:mi:ss')這樣的語句獲得ORA-08149:# – user506069 2012-04-05 20:32:35

+0

:是的,我們不會得到上面的錯誤,而選擇',但他所提到的,他需要更新語句的時間'00:12:00',所以在這種情況下更新失敗並拋出上述錯誤。在我的情況下'HH24:MI:SS '正在爲我工​​作並獲得理想的結果'2012年4月2日00:12:00。我認爲這必須與'v $ parameter'數據字典中的NLS_DATE_FORMAT參數相關。 – 2012-04-05 20:43:28