假设星期从星期一开始,从 PostgreSQL 的日期字段中提取星期几

新手上路,请多包涵
select extract(dow from datefield)

提取一个从 0 到 6 的数字,其中 0 是星期日;假设周从星期一开始(所以 0 将是星期一),有没有办法在 SQL 中获取星期几?

原文由 Eugenio 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 878
2 个回答

从手册

isodow

    The day of the week as Monday (1) to Sunday (7)

因此,您只需从该结果中减去 1:

 psql (9.6.1)
Type "help" for help.

postgres=> select extract(isodow from date '2016-12-12') - 1;
  ?column?
-----------
         0
(1 row)
postgres=>

原文由 a_horse_with_no_name 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您想要工作日的文本版本,则可以使用 to_char(date, format) 函数提供所需的日期和格式。

根据 https://www.postgresql.org/docs/current/functions-formatting.html#FUNCTIONS-FORMATTING-DATETIME-TABLE 我们有以下格式选项可以用于日期。我已经展示了一些输出示例。根据文档,英文缩写的日期值是 3 个字符,其他语言环境可能会有所不同。

 select To_Char("Date", 'DAY'), * from "MyTable"; -- TUESDAY
select To_Char("Date", 'Day'), * from "MyTable"; -- Tuesday
select To_Char("Date", 'day'), * from "MyTable"; -- tuesday
select To_Char("Date", 'dy'), * from "MyTable";  -- tue
select To_Char("Date", 'Dy'), * from "MyTable";  -- Tue
select To_Char("Date", 'DY'), * from "MyTable";  -- TUE

原文由 Max Carroll 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题