如何在BigQuery上获得“上周一”?

时间:2015-08-05 22:53:28

标签: google-bigquery

使用BigQuery,我需要找出“上周一”的时间。我该如何计算这个日期?

例如,今天是星期一,所以如果被调用,公式应该返回今天的日期。昨天应该已经回到上个月的第27位了。

基于https://blog.svpino.com/2015/08/03/how-to-determine-last-mondays-date-in-bigquery

4 个答案:

答案 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);