【问题标题】:Calculating a Week Ending Date from a date in a Postgresql database - ERROR: operator does not exist: timestamp without time zone + double precision从 Postgresql 数据库中的日期计算周结束日期 - 错误:运算符不存在:没有时区的时间戳 + 双精度
【发布时间】:2021-09-13 18:53:24
【问题描述】:

我在 Postgresql 数据库中有一个表 (loads),它有一个 TimeStamp 数据类型列 (ship_date)。我可以使用 isodow 计算出一周中的哪一天,但需要将其添加到 ship_date 列中的日期以得出“一周结束日期”。

我们总体上正在尝试做的事情 load.ship_date + (6 - extract(isodow from loading.ship_date))

我们需要什么 周三周六(周末) 2021 年 6 月 30 日 + 6 - 3 = 2021 年 7 月 3 日

我们收到以下错误 错误:运算符不存在:没有时区的时间戳+双精度;

【问题讨论】:

    标签: postgresql timestamp isodate


    【解决方案1】:

    您缺少一些类型转换。将localtimestamp 用于您的loads.ship_date,那就是

    SELECT localtimestamp::date + 6 -
           extract(dow FROM localtimestamp)::integer;
    
      ?column?  
    ════════════
     2021-07-03
    (1 row)
    

    调用timestampship_date 类型的列是一个有问题的想法。

    【讨论】:

      【解决方案2】:

      使用 date_trunc 到一周的第一天 (iso),然后添加间隔 6 天以获得一周的最后一天。

      select date_trunc('week', now()) + interval '6 days';
      

      【讨论】:

        猜你喜欢
        • 2020-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-26
        • 1970-01-01
        相关资源
        最近更新 更多