2015-11-08 79 views
1

我收到此錯誤。SQL數據截斷:錯誤日期值

數據截斷:不正確的日期值:'18 -Jun-13' 列 'dateFrom' 在行1

可能是什麼這個錯誤的原因是什麼?

INSERT INTO Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) VALUES ('01', '01', '18-JUN-13', '26-NOV-13', '01'); 
INSERT INTO Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) VALUES ('02', '01', '18-JUN-85', '26-JUN-85', '02'); 
INSERT INTO Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) VALUES ('02', '03', '18-JUN-66', '26-JUN-66', '01'); 
INSERT INTO Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) VALUES ('04', '02', '18-OCT-13', '23-OCT-13', '01'); 
INSERT INTO Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) VALUES ('02', '03', '18-JUL-87', '26-AUG-87', '01'); 
INSERT INTO Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) VALUES ('02', '03', '18-AUG-87', '26-AUG-87', '01'); 
INSERT INTO Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) VALUES ('02', '01', '18-AUG-87', '26-SEP-87', '01'); 
+0

_incorrect date value_似乎是一個明顯的線索 - 看看'to_date'可能有幫助,例如[here](http://www.techonthenet.com/oracle/functions/to_date.php) – wwkudu

+0

您是否在桌上有觸發器,可能是過去拒絕預訂?否則,你如何執行這些語句 - 沒有顯示ORA錯誤代碼,所以你的客戶端/應用程序/等。似乎在隱藏你的東西。 –

+0

嗨,亞歷克斯,我是SQL新手;使用SQL小提琴進行練習。我看了一下我在這個領域之前的代碼,發現它沒有任何問題。謝謝您的意見! – Starbucks

回答

2

如果你不完全需要依靠日期格式,use the SQL standard DATE literal instead, as I've described in this blog post,始終。因此,而不是:

INSERT INTO Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) 
VALUES ('01', '01', '18-JUN-13', '26-NOV-13', '01'); 

...寫信:

INSERT INTO Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) 
VALUES ('01', '01', DATE '2013-06-18', DATE '2013-11-26', '01'); 

如果該格式要求(例如,因爲你是從一些外部源加載數據),使用TO_DATE()解析它:

INSERT INTO Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) 
VALUES (
    '01', 
    '01', 
    TO_DATE('18-JUN-13', 'DD-MON-YY'), 
    TO_DATE('26-NOV-13', 'DD-MON-YY'), 
    '01' 
); 
+0

謝謝你的建議。有效! :-) – Starbucks