Sql 检查时间是否大于上午9点的约束

Sql 检查时间是否大于上午9点的约束,sql,postgresql-9.2,Sql,Postgresql 9.2,如何仅检查时间输入,以便之前的任何输入都不可接受 CREATE TABLE demo.event( ecode CHAR(4) UNIQUE NOT NULL PRIMARY KEY, edesc VARCHAR(20) NOT NULL, elocation VARCHAR(20) NOT NULL, edate DATE NOT NULL CONSTRAINT date_check CHECK(edate BETWEEN '

如何仅检查时间输入,以便之前的任何输入都不可接受

CREATE TABLE demo.event(

ecode       CHAR(4) UNIQUE NOT NULL PRIMARY KEY,
edesc       VARCHAR(20) NOT NULL,
elocation   VARCHAR(20) NOT NULL,
edate       DATE NOT NULL 
            CONSTRAINT date_check CHECK(edate BETWEEN '2016/04/01' AND '2016/04/30'),
etime       TIME NOT NULL
            CONSTRAINT time_check CHECK(etime (HOUR > '08:00:00')),
emax        SMALLINT NOT NULL 
            CONSTRAINT emax_check CHECK(emax >=1 OR emax<=1000)
);
CREATE TABLE demo.event(
ecode CHAR(4)唯一非空主键,
edesc VARCHAR(20)不为空,
elocation VARCHAR(20)不为空,
日期不为空
约束日期检查(日期介于“2016/04/01”和“2016/04/30”之间),
时间不为空
约束时间检查(时间(小时>08:00:00)),
emax SMALLINT不为空

约束emax\u check check(emax>=1或emax要编写时间文字,需要使用关键字
time
not hour:

CONSTRAINT time_check CHECK(etime > TIME '08:00:00'),
因此,上午9点之前的任何入境都是不可接受的

与您使用的
08:00:00'
相矛盾,
>时间'08:00:00'
将允许
08:00:01
(上午8点后一秒)。如果您确实只想在上午9点之后允许值,请使用:

CONSTRAINT time_check CHECK(etime > TIME '09:00:00'),

您还应使用适当的ISO格式日期,以避免任何歧义:

CONSTRAINT date_check CHECK(edate BETWEEN DATE '2016-04-01' AND DATE '2016-04-30')
有关日期和时间文字的正确语法的更多详细信息,请参见手册:

向我们展示完整的
create table
语句(编辑您的问题,不要在评论中发布代码)