2017-07-31 276 views
-3

我正在使用以下函數。Oracle將日期和時間插入日期列[存儲過程]

TO_DATE(TO_CHAR (SYSDATE, 'YYYY-MON-DD HH24:MI:SS'),'yyyy/mm/dd hh24:mi:ss') 

其工作的罰款,如果我從喜歡一個簡單的查詢更新數據: -

set modified_on= TO_DATE(TO_CHAR (SYSDATE, 'YYYY-MON-DD HH24:MI:SS'),'yyyy/mm/dd hh24:mi:ss') 

但在存儲過程的情況下不能正常工作。

注意: - 在存儲過程中,我使用動態查詢。立即執行....

沒有錯誤,但只有日期插入或更新沒有時間。

現在: - 「31-07-2017」 需要這樣的東西: - 「31-07-2017 HH:MI:SS」

在此先感謝您的幫助。

+2

如果該列是日期,爲什麼你使用to_char? –

+0

因爲我正在嘗試按照前面提到的插入時間和日期。 –

+0

需要類似於: - 「31-07-2017 hh:mi:ss」 –

回答

0

我可能會很生氣,但我確定這個確切的問題已經逐字地發佈過了,一切都很瘋狂。無論如何..你寫道:

TO_DATE(TO_CHAR (SYSDATE, 'YYYY-MON-DD HH24:MI:SS'),'yyyy/mm/dd hh24:mi:ss') 

這沒有什麼意義。你有一個日期,你將它轉換成一個看起來像一種格式的字符串,並立即嘗試並將其轉換回日期,但使用不同的格式。你不能這麼做:現在取這個日期並沒有任何意義,並且把它轉換成一個看起來像2017-JUL-31 18:28:00的字符串,然後讓oracle用斜線和一個數字月來解釋它 - 你剛剛準備的字符串有破折號,而不是斜槓。它有一個文本月份名稱不是數字月份標識符..它不會工作。甲骨文將遇到第一個-,並期待\,它會窒息。

只需使用你必須先從日期,日期:

SYSDATE 

即:

set modified_on= SYSDATE 
+0

但SYSDATE將僅返回日期,我也需要時間。 –

+1

Oracle文檔:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions172.htm - 「SYSDATE返回爲數據庫所在的操作系統設置的當前日期**和時間** 「 –

+0

嗨凱斯,查詢其工作,但不適用於StoredProcedure。你可以看看下面的例子。 –

0

在Oracle中,當前日期+時間=系統日期。 select sysdate from dual會產生2017-07-31 23:18:40

+0

任何人都可以給我任何例子 –

+0

像這樣: - 創建或替換程序Uspx_test(x number)是 BEGIN update x set modified_on = sysdate其中xx = x; end Uspx_test; –