我试图用postgrSQL找到一周某天的时间戳。例如,可以使用now()来获取当前时间,但我希望获得相同类型的数据返回,例如,最近的星期一或星期日。
我正在寻找这个,因为我有一个查询,从现在到几个月前检索数据,我不想包括当前周。作为一个例子它现在做了什么:
creation_date > now() - INTERVAL '2 month'
我认为这可能会实现我的目标:
BETWEEN now() - INTERVAL '4 month' AND now() - INTERVAL '1 week'
但它只是从查询中减去7天,这不是我想要的。基本上,我想:
BETWEEN now() - INTERVAL '4 month' AND ????
如果问号是最近一个星期天的时间戳,至少我相信这会有用。
答案 0 :(得分:2)
date_trunc('week', current_date) - interval '1' day
date_trunc('week', current_date)
将返回本周开始的日期。
本周开始时间一直是Postgres的周一。这就是为什么你需要从结果中减去另一天来获得星期日。
答案 1 :(得分:1)
您可以使用EXTRACT(DOW FROM date)
提取当周的当天(0-6,星期日为0)。然后,您可以使用此选项创建添加或减去的间隔以达到特定的工作日。例如,最近的星期日将是now() - (EXTRACT(DOW FROM now()) || ' days')::interval
。