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

如何在PostgreSQL中为波斯历将每周首日设为周六(无配置权限)

解决波斯历周(周六为首日)的记录筛选问题

由于PostgreSQL默认的DATE_TRUNC('week', ...)遵循系统全局周起始设置,无法修改配置的情况下,需要手动计算波斯历周(周六为首日)的时间区间来筛选数据。

替换原WHERE语句为以下内容:

WHERE ("tasks"."finished_date")::DATE >= (DATE_TRUNC('day', NOW()) - INTERVAL '1 day' * ((EXTRACT(DOW FROM NOW()) + 1) % 7))
  AND ("tasks"."finished_date")::DATE < (DATE_TRUNC('day', NOW()) - INTERVAL '1 day' * ((EXTRACT(DOW FROM NOW()) + 1) % 7) + INTERVAL '7 days')

语句逻辑说明

  • EXTRACT(DOW FROM NOW()):获取当前日期在一周中的索引(0=周日,1=周一,…,6=周六)
  • (EXTRACT(DOW FROM NOW()) + 1) % 7:将索引调整为周六对应0,周日到周五对应1-6,方便计算与最近周六的天数差
  • DATE_TRUNC('day', NOW()) - INTERVAL '1 day' * ...:通过减去对应天数,得到当前波斯历周的首日(周六)
  • 加7天得到下周周六,用<确保筛选范围不包含下周的日期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:42:07