我想向表中添加约束,要求checkout_time
继续return_time
,并且这两者都要在现在之前(如果存在)。
在PostgreSQL中执行此操作的正确方法是什么?我无法确定哪个日期函数最合适。
答案 0 :(得分:2)
您可以像其他任何值一样简单地比较时间。
postgres=# SELECT TIMESTAMP '2011-03-11 10:40:13' < NOW();
?column?
----------
t
(1 row)
因此,您可以非常轻松地比较值。因此,使用您的表格,您可以添加CHECK
约束。
CREATE TABLE foo(
mydateTIMESTAMP
CHECK (mydate < NOW()));
您可以根据需要为表格生成尽可能多的CHECK
,并将它们与逻辑运算符相结合
答案 1 :(得分:1)
除了DrColossos的回答,这里是“一个接一个”的检查:
ALTER TABLE foo ADD CONSTRAINT check_time CHECK (checkout_time < return_time)
答案 2 :(得分:1)
为什么不使用<
运算符?
mydb=# select '2011-03-01'::timestamp < '2011-03-02'::timestamp;
?column?
----------
t
(1 row)
mydb=# select '2011-03-01'::timestamp < '2011-03-01'::timestamp;
?column?
----------
f
(1 row)