在BigQuery SQL中获取以前的工作周日期

时间:2019-06-28 16:41:50

标签: sql google-bigquery

我需要在BigQuery中获取以前的工作周日期(星期一至星期五)。 到目前为止,我已经管理了以下内容:

SELECT 
DATE_TRUNC(CURRENT_DATE(), WEEK(MONDAY)) as previous_mon,
DATE_ADD(DATE_TRUNC(CURRENT_DATE(), WEEK(MONDAY)), INTERVAL 4 DAY) as previous_fri

但是,这给了我最近的周一至周五的日期,实际上是本周。换句话说,如果我今天(2019年6月28日)运行此查询,则会得到以下结果:

Row today         previous_mon    previous_fri  
1   2019-06-28    2019-06-24      2019-06-28

但是我真正需要的是:

Row today         previous_mon    previous_fri  
1   2019-06-28    2019-06-17      2019-06-21

2 个答案:

答案 0 :(得分:0)

以下是用于BigQuery标准SQL

#standardSQL
SELECT 
  CURRENT_DATE() today,
  DATE_SUB(DATE_TRUNC(CURRENT_DATE(), WEEK(MONDAY)), INTERVAL 1 WEEK) previous_mon,
  DATE_SUB(DATE_TRUNC(CURRENT_DATE(), WEEK(MONDAY)), INTERVAL 3 DAY) previous_fri

有结果

Row today       previous_mon    previous_fri     
1   2019-06-28  2019-06-17      2019-06-21  

答案 1 :(得分:0)

再减去一周:

SELECT DATE_SUB(DATE_TRUNC(CURRENT_DATE(), WEEK(MONDAY)), INTERVAL 1 WEEK) as previous_mon,
       DATE_SUB(DATE_ADD(DATE_TRUNC(CURRENT_DATE(), WEEK(MONDAY)), INTERVAL 4 DAY), INTERVAL 1 WEEK) as previous_fri