我正在尝试创建一个约束来检查记录是否不超过2016年。
这是我数据库中的记录
这是我的问题:
ALTER TABLE SIGHTINGS
ADD CONSTRAINT CK_SIGHTING_DATE
CHECK (SIGHTING_DATE <=TO_DATE('01-JAN-16'));
但我收到错误说:第1行的错误:
ORA-02436:CHECK中错误指定了日期或系统变量 约束
我在这个网站上查了一些类似的问题,但解决方案并没有解决我的问题。
答案 0 :(得分:3)
一种选择是使用extract()
功能,因为您只想查看年份:
ALTER TABLE SIGHTINGS
ADD CONSTRAINT CK_SIGHTING_DATE
CHECK (extract(year from SIGHTING_DATE) < 2016);
或使用ANSI日期文字:
ALTER TABLE SIGHTINGS
ADD CONSTRAINT CK_SIGHTING_DATE
CHECK (SIGHTING_DATE < date '2016-01-01');
答案 1 :(得分:0)
你有日期规定
var ma = d3.line()
.x(function(d) { return x(parseDate(d.date)); })
.y(function(d) { return y(d.ma); });
或
ALTER TABLE SIGHTINGS
ADD CONSTRAINT CK_SIGHTING_DATE
CHECK (SIGHTING_DATE <=
/*TO_DATE('01-JAN-16','DD-MON-YY') as I was pointed your should specify 4 digits for year*/
TO_DATE('01-JAN-2016','DD-MON-YYYY'));
当你说“不超过2016”时,你的意思是另一件事
您的支票日期为2016年1月1日,但不允许2016年1月2日。
如果您想包括整个2016年的写作
ALTER TABLE SIGHTINGS
ADD CONSTRAINT CK_SIGHTING_DATE
CHECK (SIGHTING_DATE <=DATE'2016-01-01');
或 trunc(SIGHTING_DATE,'yy')&lt; = DATE'2016-01-01'