【问题标题】:How to determine if one timestamp precedes another in postgresql?如何确定 postgresql 中一个时间戳是否在另一个时间戳之前?
【发布时间】:2011-03-11 09:20:06
【问题描述】:

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

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

【问题讨论】:

    标签: sql postgresql timestamp


    【解决方案1】:

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

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

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

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

    您可以根据需要为表格创建任意数量的CHECKs,并将它们与逻辑运算符相结合

    【讨论】:

      【解决方案2】:

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

      更改表 foo 添加约束 check_time CHECK (checkout_time

      【讨论】:

        【解决方案3】:

        为什么不直接使用&lt; 运算符?

        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)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-21
          • 2014-03-05
          • 2020-01-02
          • 2013-11-06
          • 1970-01-01
          • 1970-01-01
          • 2017-05-12
          • 1970-01-01
          相关资源
          最近更新 更多