我发现一个月的最后一天有一个函数last_day
,而从星期日开始的一周的数字日是date_part(dow, date)
,但是我想要约会,并获得第一天那个星期。
含义:如果date ='2018-02-14
',则结果应为'2018-02-11
'。
有什么想法吗?
答案 0 :(得分:3)
您只想从当前日期中减去dow
值。
select dateadd(d, -datepart(dow, my_date), my_date)
from (select date('2018-02-14') as my_date)
> 2018-02-11 00:00:00.0
例如,如果dow
为2018-02-14
为3(星期三),则可以减去3天以返回“第0天”。
还有date_trunc
函数会在给定的datepart之后截断所有内容。这有点笨重,只会让你回到之前的星期一,而不是星期天。
select date_trunc('week', my_date)
from (select date('2018-02-14') as my_date)
答案 1 :(得分:0)
不确定是否有更有效的解决方案,但:
date_trunc('week',my_date + '1 day'::interval)::date - '1 day'::interval as week_start