SQL创建表默认值作为特定日期

时间:2014-11-05 09:19:00

标签: sql oracle date default oracle-apex

我正在使用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));

它抛出了“非有效月份”错误。

3 个答案:

答案 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次更正

  1. 首先从UNIQUE删除LeaseNo子句,您无法创建具有唯一约束的cols主键。
  2. 并且,请在默认条款中尝试此格式 - ' 31-DEC-2013'
相关问题