在表中使用sysdate导致错误的有效月份

时间:2016-10-06 15:25:49

标签: sql oracle

所以我正在做作业,桌子是

Create TABLE Book
(
bookID number(2,0) not null, 
title char(50) not null,
catID char(2),
copyrightYear number(2,0),
isbnNumber char(50),
publisherID char(2),
purchasePrice number(4,2),
coverType char(10),
datePurchased date default sysdate,
pages number(4,0)
)

当我在其中插入日期时变为错误(不是有效的月份)

Insert into Book 
values (1, 'Dirk Luchte', 'PS', 93, null,'NE', 23.50,'Hard', '23-nov-1993',1012);

当我尝试使用to_date语句时

Insert into Book 
values (1, 'Dirk Luchte', 'PS', 93, null,'NE', 23.50,'Hard', to_date('23-nov-1993','DD-MM-YYYY'),1012);

整个神谕崩溃了,我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用official documentation作为作业,不会被视为作弊(至少不是在Stack Overflow中提问):

  

格式模型

Element   Specify in TO_* datetime functions?     Description
MM        Yes                                     Month (01-12; January = 01)

所以nov显然不是1到12之间的数字,因此是错误。

请学习不要忽视错误消息(你甚至没想过在这里分享它):他们来帮忙。

关于在表中使用sysdate导致错误标题,你很困惑。不使用列的默认值:您指定显式值。如果您想要默认值,则必须将列保留。这也意味着您必须在查询中提供列列表(这无论如何都是一种很好的做法,因为添加新列时您的应用不会中断)。

答案 1 :(得分:1)

指定日期文字的最简单方法是使用ISO格式:

DATE '1993-12-23'