在创建 table 中检查日期

check date in Create table

我正在设置一个关于在 PostgreSQL 中借书的新 table。 这本书不能借超过 56 天 但我没有得到正确的 table 因为我的支票日期不正确。 这是我的代码:

Create table loaning(
    Signature varchar PRIMARY KEY ,
    loanDate date  DEFAULT CURRENT_TIMESTAMP,
    returnDate date default CURRENT_TIMESTAMP + interval '28 day' 
        check((date loanDate + integer '56') < returnDate),

            );

我期待这样的语法:

create table loaning (
    Signature varchar PRIMARY KEY ,
    loanDate date DEFAULT CURRENT_DATE,
    returnDate date default CURRENT_DATE + interval '28 day' 
    check ((loanDate + interval '56 day') < returnDate),
);

您在 returnDate 上获得正确的区间表达式,但在 check 约束中不正确。此外,没有理由将 date 转换为 date.

我建议主键是一个序列列,所以我真的会推荐这样的东西:

create table loaning (
    loaningId serial primary key,
    signature varchar(255),
    loanDate date DEFAULT CURRENT_DATE,
    returnDate date default CURRENT_DATE + interval '28 day' 
    check ((loanDate + interval '56 day') < returnDate),
);

我不知道 signature 是什么。但也许它甚至不是独一无二的。