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

发布于 2024-10-21 09:23:41 字数 148 浏览 4 评论 0原文

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

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

I want to add constraints to a table, requiring checkout_time to proceed return_time and both of these to be before now, if present.

What is the right way to do this in PostgreSQL? I was unable to determine which date functions were most appropriate.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

分分钟 2024-10-28 09:23:41

您可以像任何其他值一样简单地相互比较时间。

postgres=# SELECT TIMESTAMP '2011-03-11 10:40:13' < NOW();
 ?column? 
----------
 t
(1 row)

因此您可以非常轻松地比较值。因此,在您的表格中,您可以添加 CHECK 约束。

CREATE TABLE foo(
    mydateTIMESTAMP
    CHECK (mydate < NOW()));

您可以根据需要为表创建任意数量的CHECK,并添加将它们与逻辑运算符组合起来

You can simply compare times with each other like any other value.

postgres=# SELECT TIMESTAMP '2011-03-11 10:40:13' < NOW();
 ?column? 
----------
 t
(1 row)

So you can compare values very easily. So with your table, you can add a CHECK constraint.

CREATE TABLE foo(
    mydateTIMESTAMP
    CHECK (mydate < NOW()));

You can make as many CHECKs for the table as you need and add combine them with logical operators

想你的星星会说话 2024-10-28 09:23:41

除了 DrColossos 的回答之外,这里是“一个在另一个之前”的检查:

ALTER TABLE foo 
   ADD CONSTRAINT check_time CHECK (checkout_time < return_time)

In addition to DrColossos answer, here is the check for the "one before the other":

ALTER TABLE foo 
   ADD CONSTRAINT check_time CHECK (checkout_time < return_time)
药祭#氼 2024-10-28 09:23:41

为什么不直接使用 < 运算符呢?

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)

Why don't you just use the < operator?

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文