You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL按当前时间所在特定周筛选数据的SQL查询问题

精准获取PostgreSQL当前所在周数据的查询方案

你之前用的now()::date - 7是取最近7天的数据,不是自然周范围,所以没法精准匹配目标周(比如2023年第2周1月9日-1月15日)。下面给你两种符合需求的写法:

方案一:匹配ISO标准周(周一到周日,和你的示例一致)

SELECT *
FROM 你的实际表名  -- 记得替换成你的表名称
WHERE started_job_date >= date_trunc('week', now())::date
  AND started_job_date < date_trunc('week', now())::date + interval '7 days';
  • date_trunc('week', now())会返回当前周的周一零点(ISO周默认以周一为起始)
  • 加上7天后得到下周一零点,用<而不是<=,能确保包含当前周最后一秒的所有数据(避免timestamp类型数据被截断)

方案二:如果你的周以周日为起始

如果业务里周是从周日到周六,调整成下面的写法:

SELECT *
FROM 你的实际表名
WHERE started_job_date >= (date_trunc('week', now()) - interval '1 day')::date
  AND started_job_date < (date_trunc('week', now()) + interval '6 days')::date;

注意事项

  • 不要用BETWEEN:如果started_job_date是timestamp类型,BETWEEN ... AND now()会截止到查询执行的当前时间,而不是周的结束时间,用< 下一周起始的方式更精准。
  • 必须补全FROM子句:你原来的SQL缺少表名,执行会报错,记得替换成实际表名。

内容的提问来源于stack exchange,提问作者user8272537

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 12:15:05