如何确定postgresql中的一个时间戳是否先于另一个时间戳?

时间:2011-03-11 09:20:07

标签: sql postgresql timestamp

我想向表中添加约束,要求checkout_time继续return_time,并且这两者都要在现在之前(如果存在)。

在PostgreSQL中执行此操作的正确方法是什么?我无法确定哪个日期函数最合适。

3 个答案:

答案 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)