如何在Postgresql中查询(SELECT),使得不同日期的列的结果在本周的周日和周六之间。
查询假示例:
SELECT * FROM table WHERE datecolumn BETWEEN CURRENT WEEK
在另一个查询中,我有一年中的第几周。如何对这些日期进行 SELECT,在 WHERE 子句中应用特定年份的特定周数。
查询假示例:
SELECT * FROM table WHERE datecolumn BETWEEN WEEK15 FROM year 2020
最佳答案
也许你可以使用这样的东西:
SELECT *
FROM table
WHERE
EXTRACT(week FROM datecolumn) = EXTRACT(week FROM NOW())
AND
EXTRACT(isoyear FROM datecolumn) = EXTRACT(isoyear FROM NOW())
周
是 ISO-8601 周数。根据定义,ISO 周从星期一开始,一年的第一周包含该年的 1 月 4 日。换句话说,一年的第一个星期四是该年的第一周。
在 ISO 周编号系统中,一月初的日期可能属于上一年的第 52 或 53 周,而 12 月底的日期可能属于下一年的第一周。
例如,2005-01-01 是 2004 年第 53 周的一部分,2006-01-01 是 2005 年第 52 周的一部分,而 2012-12-31 是 2005 年第一周的一部分2013年。
建议将 isoyear
字段与 week
一起使用以获得一致的结果。
如果您需要自定义(非 ISO)周编号 - 您将必须自行计算。
关于sql - 按周过滤查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59811558/