获取一周中某一天的时间戳

时间:2011-03-16 15:24:22

标签: sql postgresql

我试图用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 ????

如果问号是最近一个星期天的时间戳,至少我相信这会有用。

2 个答案:

答案 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