Zastanawiam się tylko, jak wstawić datę 01.01.2014 do wyroczni

Próbowałem następujących, ale bezskutecznie

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

Jestem pewien, że przeoczyłem coś dość oczywistego, więc świeże spojrzenie na to naprawdę pomoże.

Dzięki!

2
damien535 21 lipiec 2011, 20:31
WHERE... nie należy do INSERT...
 – 
Yahia
21 lipiec 2011, 20:34
Podejrzewam, że twoja wstawka działa poprawnie, ale kiedy przeglądasz datę, używasz formatu daty (prawdopodobnie domyślnego), który nie zawiera wskaźnika BC.
 – 
Dave Costa
21 lipiec 2011, 23:09

3 odpowiedzi

Najlepsza odpowiedź

Nie widzę problemu z twoją składnią. Mi to pasuje:

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>

Jaki dokładnie masz problem? Jaka wersja Oracle?

Musisz użyć specyfikatora formatu BC lub SYYYY na wyjściu, w przeciwnym razie otrzymasz nieprawidłowe daty:

SQL> select * from tt;

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

SQL> 
4
DCookie 21 lipiec 2011, 21:00
INSERT INTO person(birth_date)
 VALUES(TO_DATE('4000/01/01 BC', 'yyyy/mm/dd bc'))
2
Tony Andrews 21 lipiec 2011, 20:37
@Ricardo: Nie, nie testowałem tego.
 – 
Tony Andrews
7 marzec 2014, 16:31
Ok. Usunę komentarz. Ale ja też to przetestowałem i dostałem ten błąd. Skopiowałem Twoje oświadczenie i wkleiłem je, zmieniając tylko nazwy tabel i kolumn. W rzeczywistości komunikat o błędzie jest inny: SQL Error: ORA-01856: BC/B.C. or AD/A.D. required 01856. 00000 - "BC/B.C. or AD/A.D. required"
 – 
Ricardo Appleton
7 marzec 2014, 16:34
OK, to chyba problem z lokalizacją?
 – 
Tony Andrews
7 marzec 2014, 16:49

Próbować

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

Lub możesz użyć notacji BC - zobacz http://rwijk.blogspot.com/2008 /10/rok-zero.html

0
Yahia 21 lipiec 2011, 20:35
Ta instrukcja zwróci błąd: SQL Error: ORA-01841: (full) year must be between -4713 and +9999, and not be 0. powinieneś użyć obrazka w formacie 'syyyy/mm/dd'
 – 
Ricardo Appleton
7 marzec 2014, 16:15