读书人

为什么建个 check 约束总是报无效月份

发布时间: 2012-01-19 20:57:58 作者: rapoo

为什么建个 check 约束总是报无效月份呢?

window XP 中文版 + oracle10g


为什么建个 check 约束总是报无效月份呢?

已经将nls_date_format加在环境变量中了. 如下:


C:\> set nls_date_format
nls_date_format=dd-mm-yyyy


SQL> select sysdate from dual;

SYSDATE
----------
16-09-2007


SQL> CREATE TABLE test (
2 product_name VARCHAR2(25),
3 salesperson VARCHAR2(3),
4 purchase_date DATE,
5 quantity NUMBER(4,2)
6 );


SQL> alter table test
2 add constraint reasonable_date
3 check(purchase_date is not null and purchase_date > = '30-07-2003 ');
alter table plsql101_purchase
*
第 1 行出现错误:
ORA-01843: 无效的月份




[解决办法]
check(purchase_date is not null and purchase_date > = '30-07-2003 ');
改为:
check(purchase_date is not null and purchase_date > = to_date( '30-07-2003 00:00:00 ', 'dd/mm/yyyy hh24:mi:ss '));

拜托,回帖有点公德心好不好。

读书人网 >oracle

热点推荐