【发布时间】:2011-03-11 09:20:06
【问题描述】:
我想向表添加约束,要求 checkout_time 继续 return_time 并且这两者都在现在之前,如果存在的话。
在 PostgreSQL 中执行此操作的正确方法是什么?我无法确定最合适的日期函数。
【问题讨论】:
标签: sql postgresql timestamp
我想向表添加约束,要求 checkout_time 继续 return_time 并且这两者都在现在之前,如果存在的话。
在 PostgreSQL 中执行此操作的正确方法是什么?我无法确定最合适的日期函数。
【问题讨论】:
标签: sql postgresql timestamp
您可以像任何其他值一样简单地相互比较时间。
postgres=# SELECT TIMESTAMP '2011-03-11 10:40:13' < NOW();
?column?
----------
t
(1 row)
因此您可以非常轻松地比较值。因此,对于您的表,您可以添加 CHECK 约束。
CREATE TABLE foo(
mydateTIMESTAMP
CHECK (mydate < NOW()));
您可以根据需要为表格创建任意数量的CHECKs,并将它们与逻辑运算符相结合
【讨论】:
除了 DrColossos 的答案,这里是“一个在另一个之前”的检查:
更改表 foo 添加约束 check_time CHECK (checkout_time【讨论】:
为什么不直接使用< 运算符?
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)
【讨论】: