如何从bdc_Xm表中计算并过滤出工作日的办理时长,排除中午11:30至14:30和下午17:30之后的时间段?这个时间段涵盖了中午休息和下班时间,同时也需要排除周末的数据。开始时间是cjsj,结束时间是bjsj
时间: 2024-12-17 13:25:28 浏览: 10
要在 `bdc_Xm` 表中计算并过滤出工作日的办理时长,首先需要将 `cjsj` 列视为 `transaction_start_time`,`bjsj` 列作为 `transaction_end_time`,然后编写 SQL 查询来满足这些条件。以下是可能的查询示例:
```sql
SELECT
transaction_start_time,
DATE_FORMAT(transaction_start_time, '%w') as weekday, -- 检查是否是工作日 (1-5表示周一至周五)
DATEDIFF(bjsj, cjsj) AS processing_duration -- 计算时长差值
FROM
bdc_Xm
WHERE
-- 排除周末 (0代表周六,1代表周日)
weekday BETWEEN 1 AND 5
-- 排除中午11:30至14:30和下午17:30之后的时间
AND (cjsj < '11:30:00' OR bjsj > '14:30:00' OR (cjsj >= '11:30:00' AND cjsj < '14:30:00' AND bjsj <= '14:30:00')
OR (cjsj >= '17:30:00' AND bjsj > '17:30:00'))
AND -- 确保交易完全落在工作日且不在指定时间段内
(cjsj < '17:30:00' OR bjsj > '08:30:00')
GROUP BY
transaction_start_time, weekday;
```
这个查询首先会过滤掉周末,然后检查每个交易是否在其工作时间内且未跨越中午和下班的特定时间段。
阅读全文