我正在使用Oracle的APEX,并试图将我的一个列的默认日期设置为'31 -dec-2013',但对于我的生活,它并没有发生。我已经尝试了很多语法变体并且遇到了许多错误,例如“不是有效的月份”和“这样的唯一或主键存在”这样的事情。请帮忙!这是我的代码:
Create Table Lease(
LeaseNo number(8) not null unique,
PropertyID number(6) not null,
ClientId varchar2(4) not null,
Leasestartdate date not null,
LeaseEndDate date dEFAULT ('31-12-2013'),
MonthlyRent number(8,2) check (MonthlyRent >1000),
Primary Key (LeaseNo),
Foreign key (propertyId) references property(Propertyid),
Foreign key (clientId) references client(clientid));
它抛出了“非有效月份”错误。
答案 0 :(得分:1)
使用TO_DATE将字符串转换为日期:
...
LeaseEndDate date default to_date('31-12-2013','dd-mm-yyyy')
...
答案 1 :(得分:1)
您可以将to_date
与显式日期格式模型一起使用,如ThorstenKettner所示,这意味着您不会依赖会话的NLS_DATE_FORMAT。您还可以使用date literal,它始终采用YYYY-MM-DD格式:
...
LeaseEndDate date default date '2013-12-31',
...
尽管两者之间的个人偏好很大;我碰巧更喜欢这个,部分是因为它的输入略少,但也因为DD-MM和MM-DD之间不存在歧义。
答案 2 :(得分:0)
以下是2次更正
UNIQUE
删除LeaseNo
子句,您无法创建具有唯一约束的cols主键。