MySQL SELECT 判斷今天之前或某天之前的日期條件判斷寫法

我們在執行 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 字串的方式處理。

© Copyright wibibi.com 網頁設計教學百科 基礎的網頁設計規劃、資料庫與程式設計 Since 2012