如何在PostgreSQL中截取日期?

22

我想在PostgreSQL 9中选择所有早于上周结束时间的交易记录。我应该使用哪个日期函数来构建这样一个时间间隔?

2个回答

36
> select now();
"2013-09-09 11:43:29.307089+02"
> select date_trunc('week',now()-'1 week'::interval);
"2013-09-02 00:00:00+02" //start of previous week
> select date_trunc('week',now())
"2013-09-09 00:00:00+02" // start of current week
> select date_trunc('week',now())-'1 s'::interval;
"2013-09-08 23:59:59+02" // end of previous week

因此,在日期操作符的右侧使用date_trunc('week',now())-'1 s'::interval;应该可以正常工作。这是一个带有时区的时间戳值,实际上是指UTC时间周日的23:59:59,但与UTC时间相差2个小时,具体取决于您的语言环境和设置。


2
您可以设置一个日期或从当前日期中删除天数。
请参考此链接:Postgres中的日期/时间运算符和函数
我提供了9.1版本的链接,因为您标记了Postgres 9.1,但也有9.2版本的参考页面。

请问你能否给出一个确切的例子,说明如何获取“上周末的结束时间”? - yegor256
@yegor256:抱歉,我刚刚才看到。请参考regilero的答案。 - Joe Taras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接