2011-07-21 67 views
2

只是想知道我怎麼會插入日期01/01/4000BC到Oracle如何在Oracle中插入BC日期?

曾嘗試以下,但無濟於事

INSERT INTO person(birth_date) VALUES(TO_DATE('-4700/01/01', 'syyyy/mm/dd')) 

我敢肯定,我已經錯過了很明顯的東西,所以一些新鮮盯着這個真的會有幫助。

謝謝!

+0

的WHERE ...不屬於成一個INSERT ... – Yahia

+0

我懷疑你的刀片是工作正常,但是當您查看日期時,您使用的日期格式(可能是默認值)不包含BC指標。 –

回答

4

我看不出這個問題與你的語法。它適用於我:

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
Connected as xxx 

SQL> CREATE TABLE tt (d DATE); 

Table created 

SQL> INSERT INTO tt VALUES (to_date('-4700/01/01','syyyy/mm/dd')); 

1 row inserted 

SQL> SELECT to_char(d, 'MM/DD/YYYY BC') FROM tt; 

TO_CHAR(D,'MM/DD/YYYYBC') 
------------------------- 
01/01/4700 BC 

SQL> 

你有什麼確切的問題?什麼版本的Oracle?

你有使用上的其他輸出的BC或SYYYY格式說明你會得到不正確的日期:

SQL> select * from tt; 

D 
----------- 
00-h:mm:ss 

SQL> 
0

嘗試

INSERT INTO person(birth_date) VALUES(TO_DATE('-4700/01/01', 'yyyy/mm/dd')) 

或者你可以使用BC符號 - 見http://rwijk.blogspot.com/2008/10/year-zero.html

+0

此語句將返回一個錯誤:'SQL錯誤:ORA-01841:(完整)年必須介於-4713和+9999之間,而不是0'。你應該使用'syyyy/mm/dd''格式圖片 –

2
INSERT INTO person(birth_date) 
VALUES(TO_DATE('4000/01/01 BC', 'yyyy/mm/dd bc')) 
+0

@Ricardo:不,我沒有測試過它。 –

+0

好的。我會刪除評論。但我也測試過,發現錯誤。複製你的語句並粘貼它只更改表名和列名。實際上,錯誤消息是不同的:'SQL錯誤:ORA-01856:BC/B.C。或AD/A.D。需要 01856. 00000 - 「BC/B.C。或AD/A.D。required」 –

+0

好吧,這可能是一個本地化問題? –