Tôi không thấy vấn đề với cú pháp của bạn. Nó phù hợp với tôi:
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>
Vấn đề chính xác mà bạn đang gặp phải là gì? Phiên bản nào của Oracle?
Bạn phải sử dụng công cụ định dạng BC hoặc SYYYY trên đầu ra nếu không, bạn sẽ nhận được ngày không chính xác:
SQL> select * from tt;
D
-----------
00-h:mm:ss
SQL>