2012-11-13 61 views
1

我想在Oracle 10g中創建表,並且想要指定日期列的日期格式。如果我使用下面的語法:在Oracle中使用日期創建表

create table datetest(
........ 
startdate date); 

那麼日期列將接受的日期格式DD-MON-YY,我不想。

我想爲我的日期列的語法是MM-DD-YYYY

請讓我知道如何與此進行。

問候,

回答

6

DATE沒有固有的格式。這不僅僅是一個恰好代表日期的字符串。 Oracle有自己的內部格式來存儲日期值。

當需要將實際日期值轉換爲字符串或反之亦然時,格式纔會起作用,這當然會發生很多事情,因爲我們以交互方式將日期寫爲字符串。

爲您的數據庫默認的日期格式是由設置NLS_DATE_FORMAT,你可能已經設置爲DD-MON-YYYY(我認爲這是美國英語語言環境的默認設置)來確定。爲了方便起見,您可以在數據庫級別或單個會話中更改它,但通常情況下更安全的編程實踐是明確的,這樣如果您的代碼在不同的環境中運行,則不會出現錯誤或更糟糕的結果。

明確指定日期值的最簡單方法是日期文字,它是單詞「日期」,後面跟着表示YYYY-MM-DD格式日期的字符串,例如, date '2012-11-13'。 Oracle解析器直接將其轉換爲相應的內部日期值。

如果你想使用不同的格式,那麼我建議在代碼中明確地使用TO_CHAR/TO_DATE和你想要的格式模型。示例:

INSERT INTO my_table (my_date) VALUES (TO_DATE('11-13-2012', 'MM-DD-YYYY')); 

SELECT TO_CHAR(my_date, 'MM-DD-YYYY') FROM my_table;