如何在PostgreSQL中获得本周的星期一日期?
例如,今天是2015年1月16日(星期五)。本周的星期一日期是2015年12月1日。
答案 0 :(得分:34)
您可以使用date_trunc()
:
select date_trunc('week', current_date);
手册中的更多细节:
http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC
如果“今天”是星期一,它将返回今天的日期。
答案 1 :(得分:15)
SELECT current_date + cast(abs(extract(dow from current_date) - 7) + 1 as int);
有效,尽管可能有更优雅的方式。
一般的想法是获取当周的当前日期dow
,减去7,然后选择abs,它将为您提供截至本周末的天数,并添加1,到星期一。这将在下周一给你。
SELECT current_date - cast(extract(dow from current_date) as int) + 1;
即,从今天的日期(星期一的路径数量)中减去当天的当天,并添加一个,以便回到星期一。
答案 2 :(得分:4)
我通常使用calendar table。有两个主要优点。
假设“本周的星期一”是指今天的星期一,除非今天是星期一。 。
select max(cal_date) as previous_monday
from calendar
where day_of_week = 'Mon'
and cal_date <= current_date;
答案 3 :(得分:0)
以及其他星期一:
下周一:
date_trunc('week', now())+ INTERVAL '7days'
上周的星期一:
date_trunc('week', now())- INTERVAL '7days'
等:)