sql - DATE_DIFF,但只计算工作日
问题描述
我有一个相当简单的查询;它看起来像这样:
SELECT
order_date,
pickup_date,
DATE_DIFF(pickup_date,order_date, day) order_to_pickup
FROM
`orders.table`
唯一的问题是,我需要计算工作日的日期差异,而不是所有天。
所以不是上面的查询返回:
+------------+-------------+-----------------+
| order_date | pickup_date | order_to_pickup |
+------------+-------------+-----------------+
| 3/29/19 | 4/3/19 | 5 |
| 3/29/19 | 4/2/19 | 4 |
+------------+-------------+-----------------+
我希望它返回:
+------------+-------------+-----------------+
| order_date | pickup_date | order_to_pickup |
+------------+-------------+-----------------+
| 3/29/19 | 4/3/19 | 2 |
| 3/29/19 | 4/2/19 | 3 |
+------------+-------------+-----------------+
解决方案
这应该是@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`
推荐阅读
- python - 尝试部署烧瓶服务器时出现 Nginx 错误
- three.js - gl.DrawElements 调用了多少次?
- android - 如何以编程方式在 oppo 设备中打开节能设置?
- python - 如何使用 Odoo 10CE 中的保存文件对话框保存文件?
- javascript - 如何在另一个表中动态添加一个表
- sql - SQL查找动态列并更新值
- database - 如何检查 mongodb 集合中特定 _id 的字段是否存在?
- sas - 如何将spk文件中已有的时间编辑为当前时间?
- android - Adding markers from Google Maps in Asynctask
- python - 初学者问题:不绘制正态分布的 Python 散点图