SQL - 时间戳查询

0 sql oracle

我试图在GP数据库中创建一个条件,我必须只能插入等于或大于今天日期的约会.

查询:

CREATE TABLE Appointment_Table(
AppointmentID Number(6) NOT NULL Primary Key,
DateAndTime Timestamp(0) NOT NULL,
Check (DateAndTime >= (SYSDATE, 'MM-DD-YYYY HH24:MI:SS')));
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

ORA-01797:此运算符必须后跟ANY或ALL

非常感谢任何帮助:)

Kje*_* S. 5

数据类型date足以存储日,小时,分钟和秒.没必要timestamp.此外,primary key为您提供not null免费的,所以无需指定.

使用触发器而不是检查约束,因为Oracle不允许sysdate(现在时间)check.

create table a (
  id    number(6) primary key,
  d     date      not null
);

create or replace trigger t_a_ins before insert on a
for each row when ( new.d < sysdate )
begin raise_application_error( -20000, 'Forbidden!'); end;
/

insert into a values (1, sysdate+1);
insert into a values (2, sysdate-1);
Run Code Online (Sandbox Code Playgroud)

第一个插入没问题.

第二个导致错误ORA-20000: Forbidden!.选择-20000和-20999之间的数字来定义您自己的ORA错误.

  • 然后,@ Ibrahim,你做错了,因为我刚刚测试了它,它完全按照你在问题中描述的方式工作. (2认同)
  • @Ibrahim - "这对我不起作用"并不是您遇到的问题的技术说明.您如何期望任何人能够根据****信息帮助您?你需要帮助吗,或者不是吗? (2认同)