sql - 按周过滤查询

标签 sql postgresql date datetime

如何在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/

相关文章:

sql - 如何在postgresql中插入图片?

Mysql:2个ID的主键内部连接给出 "Range checked for each record"

sql - 如何在 hive 中创建一个空的结构数组?

sql - 如何选择字段名称包含点的列

postgresql - psql clean/reset database to just schema

regex - Django 。 PostgreSQL。 regexp_split_to_table 不工作

java - 如何确定日期是否在 Java 中的两个日期之间?

php - 用 php 查找 WEEKOFYEAR 的最后一天/日期

Mysql,获取多列索引中特定行之前的行

javascript - 新的日期在 Firefox 和 Chrome 上的格式不同