MySQL判斷周末
在處理數據時,我們常常需要對日期進行分類、比較,而周末日常常是比較特殊的計算對象之一。在MySQL中,可以通過如下代碼來判斷某個日期是否為周末:
SELECT CASE WHEN DAYOFWEEK('2022-02-06') IN (1, 7) THEN '是周末' ELSE '不是周末' END AS `是否為周末`;
其中,DAYOFWEEK()函數用于獲取某個日期對應的星期幾,返回值為整數,1表示星期日,2表示星期一,以此類推,7表示星期六。因此,當返回值為1或7時,即表示當前日期為周末。
如果需要判斷一段時間內的所有日期是否為周末,則可以使用MySQL中的日期函數,如下所示:
SELECT COUNT(*) AS `周末天數` FROM (SELECT CURDATE() + INTERVAL a + b DAY AS `日期` FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) AS d1 JOIN (SELECT 0 AS a UNION ALL SELECT 7 UNION ALL SELECT 14 UNION ALL SELECT 21 UNION ALL SELECT 28 UNION ALL SELECT 35) AS d2 WHERE CURDATE() + INTERVAL a + b DAY BETWEEN '2022-02-01' AND '2022-02-28') AS t WHERE DAYOFWEEK(`日期`) IN (1 , 7);
其中的CURDATE()函數表示獲取當前日期,可以根據實際情況進行修改。a和b是兩個臨時表,用于生成一個連續的日期序列,生成的日期范圍為2022年2月1日至2022年2月28日。最后,使用WHERE語句篩選出所有為周末的日期,并使用COUNT()函數統計周末天數。