Как мне вставить дату BC в Oracle? - PullRequest
2 голосов
/ 21 июля 2011

Просто интересно, как бы я вставил дату 01/01 / 4000BC в оракула

Пробовал следующее, но безрезультатно

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

Я уверен, что пропустил что-то довольно очевидное, поэтому некоторые свежие взгляды на это действительно помогут.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 21 июля 2011

Я не вижу проблемы с вашим синтаксисом.Это работает для меня:

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> 
2 голосов
/ 21 июля 2011
INSERT INTO person(birth_date)
 VALUES(TO_DATE('4000/01/01 BC', 'yyyy/mm/dd bc'))
0 голосов
/ 21 июля 2011

попробуйте

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

или вы можете использовать нотацию BC - см. http://rwijk.blogspot.com/2008/10/year-zero.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...