use*_*780 4 sql amazon-redshift
我发现有一个函数last_day
用于一个月的最后一天,以及date_part(dow, date)
从星期日开始的星期几的数字,但我试图取一个日期,并获得那一周的第一天。
含义:如果 date=' 2018-02-14
' 那么结果应该是 ' 2018-02-11
'。
有任何想法吗?
您只想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
Run Code Online (Sandbox Code Playgroud)
例如,如果dow
是 3 表示2018-02-14
- 星期三 - 您可以减去 3 天以返回“第 0 天”。
还有一个date_trunc
函数可以在给定的日期部分之后截断所有内容。这有点笨拙,只会让您回到上一个星期一,而不是星期日。
select date_trunc('week', my_date)
from (select date('2018-02-14') as my_date)
Run Code Online (Sandbox Code Playgroud)
小智 8
不确定是否有更有效的解决方案,但是:
date_trunc('week',my_date + '1 day'::interval)::date - '1 day'::interval as week_start
Run Code Online (Sandbox Code Playgroud)