2014-02-05 109 views
-3

團隊, 我在SQL DATE中遇到了問題。SQL中的日期更新

我有一個提交的X_RECEIVED_DATE = 1/1/753。

我試着更新如下那場

update table_contract set x_received_date= 
to_date(TO_CHAR(X_RECEIVED_DATE-24/24,'mm/dd/yy hh:mi:ss PM')) where objid=268865360 

IM試圖更新此一領域,但它是扔錯 「ORA-01843:不是有效的月」

請幫助我在這個並提供我一些簡單的提議,請

+0

什麼是'X_RECEIVED_DATE-24/24'應該給你? –

+0

X_RECEIVED_DATE - TO_CHAR(X_RECEIVED_DATE-24/24,'MM/DD/YYHH:MI:SSPM') 1/1/1753 12/31/52 12:00:00 AM – user1835935

+0

這是輸出如果我查詢 從table_contract中選擇X_RECEIVED_DATE,TO_CHAR(X_RECEIVED_DATE - 24/24,'MM/dd/yh h:mi:ss PM'),其中objid = 268865360 – user1835935

回答

1

因此,這裏是你似乎怎麼做:

  • 減去一天(使用24/24)之日起
  • 其與特定格式
  • 轉換爲字符串將其轉換回日期,但不指定格式

我的猜測是數據庫在嘗試解析日期時無法推斷格式。但是沒有必要將它轉換爲字符串,並且我可以看到它的返回

你應該能夠只是做:基於您的評論

UPDATE table_contract 
SET x_received_date = x_received_date-1 
WHERE objid=268865360 

,你想表明解析了兩位數的年份日期不會給你原來的日期後面。如果是這樣的話,那麼在解析時只需指定的日期格式:

to_date(
     TO_CHAR(X_RECEIVED_DATE-24/24 
       ,'mm/dd/yy hh:mi:ss PM') 
     ,'mm/dd/yy hh:mi:ss PM') 
+0

thing is my previous date = 1/1/1753 when I convert it to string,it will be 12/31/52 12:00:00 AM當我將它轉換回日期並且更新顯示爲'12/31/2052'時,我想證明'12/31/52'如何轉換爲'12/31/2052'我知道這是自動完成的,因爲我們將它限制爲YY,並且通過更新它將採用默認的世紀並且將變爲2052年。但是我需要顯示結果如何轉化。 – user1835935

+0

謝謝大家。 它完成。 – user1835935

0

date場減去整數會給你一個date - 沒有理由將其轉換爲一個char,然後回date再次:

UPDATE table_contract 
SET x_received_date = X_RECEIVED_DATE - 24/24 
WHERE objid = 268865360 
+0

事情是我以前的日期= 1/1/1753 當我將它轉換爲字符串,它將是12/31/52 12:00:00 AM 當我將其轉換回日期和更新顯示爲' 12/31/2052' 因此,我想證明'12/31/52'如何轉換爲'12/31/2052' 我知道這是自動完成的,因爲我們將它限制爲YY並通過更新它將採用默認的世紀,並將轉向2052年。但我需要展示結果如何轉化。 – user1835935