一周的第一天(从星期日开始)

use*_*780 4 sql amazon-redshift

我发现有一个函数last_day用于一个月的最后一天,以及date_part(dow, date)从星期日开始的星期几的数字,但我试图取一个日期,并获得那一周的第一天。

含义:如果 date=' 2018-02-14' 那么结果应该是 ' 2018-02-11'。

有任何想法吗?

Kir*_*rst 9

您只想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)