我有一個 MYSQL 票證資料庫表,我需要計算票證在打開后 1 個作業日內關閉的位置。
我已經能夠通過下面的查詢獲得一些方法,但我不知道如何讓它在作業日之前作業。因此,周五開的票可以在周一完成,仍然算作在一個作業日內關閉。
SELECT count(*)
FROM helpdesk
WHERE hd_closeDateTime < hd_openDateTime interval 1 day
AND hd_status = 2
我想我需要某種DAYOFWEEK(timestamp_column) BETWEEN 2 AND 6?但我不確定這是否適合我當前的 WHERE 部分。
下表的相關部分如下:
CREATE TABLE `helpdesk` (
`hd_id` int(11) NOT NULL,
`hd_title` varchar(255) NOT NULL,
`hd_openDateTime` datetime NOT NULL,
`hd_closeDateTime` datetime DEFAULT NULL,
`hd_status` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
感謝@Akina,這就是現在的作業。ELT 使用 間隔功能查找要添加到工單的天數,因此它會在周五增加 3 天、周六增加 3 天和周日增加 2 天,以便在一個作業日內完成工單時計算工單.
SELECT *, DAYOFWEEK(hd_openDateTime)
FROM helpdesk
WHERE hd_closeDateTime < hd_openDateTime INTERVAL
ELT(DAYOFWEEK(hd_openDateTime),2,1,1,1,1,3,3) DAY
AND hd_status = 2
對于任何對更多資訊感興趣的人
ELT - https://www.w3resource.com/mysql/string-functions/mysql-elt-function.php
DAYOFWEEK - https://www.w3schools.com/sql/func_mysql_dayofweek.asp
uj5u.com熱心網友回復:
測驗,例如,這個:
SELECT COUNT(*)
FROM helpdesk
WHERE hd_closeDateTime < DATE(hd_openDateTime) INTERVAL ELT(DAYOFWEEK(hd_openDateTime),3,2,2,2,2,2,4) DAY
AND hd_status = 2
僅考慮日期(而非時間)。如果也必須考慮時間,那么
SELECT COUNT(*)
FROM helpdesk
WHERE hd_closeDateTime < hd_openDateTime INTERVAL ELT(DAYOFWEEK(hd_openDateTime),2,1,1,1,1,1,3) DAY
AND hd_status = 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/497110.html
下一篇:描述每個表的列
