2015-11-08 76 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