使用BigQuery,我需要找出“上周一”的时间。我该如何计算这个日期?
例如,今天是星期一,所以如果被调用,公式应该返回今天的日期。昨天应该已经回到上个月的第27位了。
基于https://blog.svpino.com/2015/08/03/how-to-determine-last-mondays-date-in-bigquery
答案 0 :(得分:2)
作为Santiago Pino published on his blog:
select
date(date_add(current_date(),
if(dayofweek(current_date()) = 1,
-6,
-(dayofweek(current_date()) - 2)),
"DAY"))
(复制with permission)
答案 1 :(得分:2)
以下是用于BigQuery标准SQL
#standardSQL
SELECT DATE_TRUNC(CURRENT_DATE(), WEEK(MONDAY))
答案 2 :(得分:1)
您可以使用UTC_USEC_TO_WEEK函数:
Select
STRFTIME_UTC_USEC( UTC_USEC_TO_WEEK(NOW(), 1), "%Y-%m-%d" )
答案 3 :(得分:0)
@Felipe Hoffa和@YABADABADOU的答案在旧的legacy SQL
中。这是standard SQL
中的答案(与Felipe Hoffa的答案非常相似):
#standardSQL
SELECT
DATE_SUB(CURRENT_DATE(),
INTERVAL
IF( EXTRACT(DAYOFWEEK FROM CURRENT_DATE()) = 1,
6,
EXTRACT(DAYOFWEEK FROM CURRENT_DATE()) - 2)
DAY);