2012-01-18 120 views
0

我在使用日期數據類型時遇到了一些問題。當試圖將一行保存到表中的字段時,它會拋出一個錯誤ora 01830,並抱怨轉換日期格式圖片結束等等。現在當我插入時,我使用格式爲「dd-mon-yyyy hh24:mi:ss」的to_date函數。當然,當我刪除時間元素時,一切都是完美的。使用日期數據類型時無法插入日期和時間

檢查sysdate,我注意到時間元素沒有顯示,我用alter session set nls_date_format來設置我想保存到表的日期和時間,它工作!

我使用了alter system set nls_date_format =「dd-mon-yyyy hh24:mi:ss」scope = spfile;這表明它已被更改,並且我可以在企業管理控制檯中看到該設置。在sqlplus中,我關閉了數據庫,並使用啓動掛載重新啓動;改變數據庫打開;然後選擇sysdate,它仍然顯示日期爲dd-mon-yy,而且還沒有時間!檢查企業管理,並查找nls_date_format設置仍顯示爲「dd-mon-yyyy hh24:mi:ss」。

所以,我的問題是這個 - 我做錯了什麼?爲什麼不能在Oracle 11g中使用日期保存日期和時間?????

謝謝

+1

正在寫入的表中的列的數據類型是什麼?我假設它是'日期'。你試圖寫入表的數據的數據類型是什麼?你是否試圖在表中寫入'DATE'(即調用'SYSDATE'函數的結果)?或者你是否試圖採用'VARCHAR2',將其轉換爲'DATE',並將其寫入表中?而關於寫入數據或顯示數據的問題? – 2012-01-18 21:01:39

+0

你能告訴我們to_date()調用嗎?包括varchar2日期的輸入 – 2012-01-19 06:18:32

回答

1

日期在Oracle中以「第二」粒度存儲。

顯示格式取決於系統和會話。在你的情況下,因爲你正在連接sqlplus,你正在使用客戶端的默認會話格式,不包括時間。您需要執行以下操作:

ALTER SESSION SET nls_date_format ="dd-mon-yyyy hh24:mi:ss"; 

當您啓動sqlplus客戶端以更改默認顯示時。有一個客戶端文件(glogin.sql?),sqlplus將在啓動時運行。如果您希望在啓動該客戶端時執行此類命令,則可以在其中放置此類命令。我很確定sqlplus客戶端在啓動時發送「alter session set nls_date ...」。

一般來說,在輸出日期時,我認爲最好是通過執行TO_CHAR(myDateColumn,「dd-mon-yyyy hh24:mi:ss」)來明確格式。如果你正在以編程方式閱讀日期,你不需要擔心,因爲你正在處理內部格式,而不是顯示格式。

0

當輸入數據與使用的日期格式不匹配時,我已經看到這個錯誤。檢查你的,數據將是我的建議。

相關問題