2011-07-21 70 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

好吧,这可能是一个本地化问题? –