SQL 数据截断:日期值不正确
SQL Data truncation: Incorrect date value
我遇到了这个错误。
Data truncation: Incorrect date value: '18-JUN-13' for column
'dateFrom' at row 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');
如果您不是绝对需要依赖格式化日期,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'
);
我遇到了这个错误。
Data truncation: Incorrect date value: '18-JUN-13' for column 'dateFrom' at row 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');
如果您不是绝对需要依赖格式化日期,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'
);