我們在執行 MySQL 的 SELECT 的資料時,如何判斷資料中「今天之前」或「某天之前」的資料呢?這時候要用 WHERE 條件子句來設定時間區,至於時間的判斷可以用 PHP 字串或 MySQL 的 CURDATE() funtion 來處理,這樣就能過濾出某一天之前的資料,以下就這幾種方式來做介紹。
範例資料表
id | order_num | date |
1 | 001 | 2022-05-20 |
2 | 002 | 2022-05-19 |
3 | 003 | 2022-05-18 |
MySQL 的條件子句語法範例
SELECT order_num WHERE date < 今天或某天;
其中「今天或某天」可以用 PHP 字,也可以用 MySQL 的 CURDATE() funtion。
用 PHP 字串來判斷
$today=date("Y-m-d");
SELECT order_num WHERE date < $today;
假設今天是 2022-05-20,這樣會找出 002 與 003 這兩筆資料,其中 today 也可以自訂為別的日期。
用 MySQL 的 CURDATE() function 來判斷
找今天之前的資料
SELECT order_num WHERE date < CURDATE() ;
MySQL 的 CURDATE() 函數可以找出今天的日期,預設格式為 0000-00-00,所以這段 sql 語法可以找出今天之前的資料,假設今天是 2022-05-20,這樣會找出 002 與 003 這兩筆資料。
找今天及今天之前的資料
SELECT order_num WHERE date <= CURDATE() ;
這裡使用了 <= 來包含今天,所以會找出 001、002 及 003 這三筆資料。
如果你的資料表中,date 包含時間,像這樣 2022-05-20 11:20:30 的格式,則可以用 DATE 先取得單純的日期,寫法如下
SELECT order_num WHERE DATE(date) < CURDATE() ;
用 MySQL 的 CURDATE() funtion 可以輕鬆找出今天之前的資料,但沒辦法設定「特定的某一天」,如果你要設定特定的某一天,建議使用上方 PHP 字串的方式處理。