【问题标题】:Get days of week in Postgresql在 Postgresql 中获取星期几
【发布时间】:2012-02-25 06:00:38
【问题描述】:

一直试图找出一个选择查询来显示星期几,例如星期一、星期二、星期三等。我最终得到了一个显示星期几的选择查询,

select ((date_trunc('week',current_date)::date) + (i+6)) as week_date 
  from generate_Series(0,6) i;

有没有办法得到周一、周二等的结果。

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    只需使用extract:

    extract(dow from date_column::timestamp)
    from whatever_table;
    

    这将返回 0 代表星期日,1 代表星期一,...,6 代表星期六。

    编辑: 或者,因为您显然不需要任何实际需要从给定日期获取星期几的东西,而您只需要一个具有表示名称的固定字符串值的列星期几,只需创建一个表...

    【讨论】:

    • 嗨,杰克,我不想要天数,而是需要查询将所有 7 天返回为“星期日”“星期一”等。您能提出其他可能性吗?
    • @Flourida - 正如我在 Edwin 答案的评论部分中指出的那样,如果您不需要任何动态生成的内容,那么您为什么要尝试在 SQL 中执行此操作?只需打印出字符串"Sunday"、"Monday" 等,就可以完成了。
    • 在不同的列中打印值。我怎样才能在单列中获得它?
    • @Flourida - 用一列制作一张表格。这些是固定的字符串。您无需动态生成任何内容。
    【解决方案2】:

    从 Postgres 9 开始,有:

    to_char(date, 'dy');

    这会将您的日期作为文本值返回到星期几

    【讨论】:

    • 请注意 to_char() 会给你一个 char 例如select '|' || to_char(current_date, 'Day') || '|'; 会给你|Tuesday | - 所以你可能需要/想要修剪。
    【解决方案3】:

    你可以这样做:

    VALUES ('Sunday'), ('Monday'), ('Tuesday'), ('Wednesday'), ('Thursday'), ('Friday'), ('Saturday');
    

    【讨论】:

      【解决方案4】:

      以下查询也有效

      select to_char((date_trunc('week',current_date)::date) + i,'Day') as wkday from generate_series(0,6) i
      

      【讨论】:

      • 请注意 to_char() 会给你一个 char 例如select '|' || to_char(current_date, 'Day') || '|'; 会给你|Tuesday | - 所以你可能需要/想要修剪。
      【解决方案5】:

      创建您取消嵌套的单个字段数组

      select day_of_week
      from unnest(
      array
        ['Sunday',
          'Monday',
          'Tuesday',
          'Wednesday',
          'Thursday',
          'Friday',
         'Saturday']
      ) as day_of_week
      

      【讨论】:

        猜你喜欢
        • 2015-03-26
        • 1970-01-01
        • 2016-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-25
        • 2017-11-07
        • 2014-05-22
        相关资源
        最近更新 更多