【问题标题】:PostgreSQL returns wrong date_part for week for date 2021-01-01PostgreSQL 在日期 2021-01-01 的一周内返回错误的 date_part
【发布时间】:2021-04-15 02:34:11
【问题描述】:

如果我运行以下查询,我会得到非常奇怪的结果。我仅从 1 月 4 日星期一开始获得第 1 周(如预期)。我在一组查询中使用它来计算每周的 covid 病例,这完全毁了我的一天:/

SELECT date_part('week', '2021-01-01'::date) as week, date_part('year', '2021-01-01'::date) as year;
week year
53   2021

版本:PostgreSQL 12.3 on x86_64-pc-linux-musl,由 gcc (Alpine 9.3.0) 9.3.0 编译,64 位

【问题讨论】:

    标签: postgresql week-number


    【解决方案1】:

    As documented in the manual 'week' 在第一周使用ISO definition

    要获取相应的 (ISO) 年份,请使用 'isoyear'

    SELECT date_part('week', '2021-01-01'::date) as week, 
           date_part('isoyear', '2021-01-01'::date) as year;
    

    以上正确returns53, 2020

    【讨论】:

    • 谢谢。我从来没有想过(而且对我来说仍然没有意义)周数“进入”新的一年。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    相关资源
    最近更新 更多