DATE_DIFF,但仅计算工作日

5 sql datediff google-bigquery

我有一个相当简单的查询;它看起来像这样:

SELECT
order_date,
pickup_date,
DATE_DIFF(pickup_date,order_date, day) order_to_pickup
FROM
`orders.table`
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,我需要计算工作日的日期差异,而不是所有日期。

因此,上面的查询返回的不是:

+------------+-------------+-----------------+
| order_date | pickup_date | order_to_pickup |
+------------+-------------+-----------------+
| 3/29/19    | 4/3/19      |               5 |
| 3/29/19    | 4/2/19      |               4 |
+------------+-------------+-----------------+
Run Code Online (Sandbox Code Playgroud)

我希望它返回:

+------------+-------------+-----------------+
| order_date | pickup_date | order_to_pickup |
+------------+-------------+-----------------+
| 3/29/19    | 4/3/19      |               2 |
| 3/29/19    | 4/2/19      |               3 |
+------------+-------------+-----------------+
Run Code Online (Sandbox Code Playgroud)

kha*_*han 6

这应该是 @Elliott Brossard 提到的简化的非暴力解决方案:

select
  order_date,
  pickup_date,
  case 
    when date_diff(pickup_date, order_date, week) > 0 
      then date_diff(pickup_date, order_date, day) - (date_diff(pickup_date, order_date, week) * 2)
    else
      date_diff(pickup_date, order_date, day) 
  end
from `orders.table`
Run Code Online (Sandbox Code Playgroud)