MySQL SELECT WHERE date 等於上個月的條件判斷寫法

用 PHP 執行 SQL 語法找出資料庫中,資料時間等於上個月的所有資料,有兩種簡單的作法,分別是用 PHP 字串帶入 SQL 語法中以及利用 MySQL 的 MONTH()、YEAR() 及 now() 函數來處理,假設我們現在有一個 table 資料表,內容如下:

id name date
1 Nick 2022-05-30
2 Peter 2022-04-25
3 Michelle 2022-04-18
4 Bill 2022-03-12

接著我們要用 PHP 執行 SELECT 查詢資料庫中 date 等於上月的資料,假設本月是 2022 年 5 月。

用 PHP 變數

$LastMonth=date("Y-m",strtotime("last month"));
SELECT name FROM table WHERE `date` LIKE '%$LastMonth%';

用 PHP 變數的做法比較簡單,首先設定一個變數 $LastMonth 並用 date 函數將日期設定為上個月,以範例來說就是 2022-04,然後再把這個變數帶入 SQL 語法的 WHERE 條件子句中,這樣就能查詢出 Peter 及 Michelle 這兩筆資料。

用 MySQL 函數

SELECT name FROM `table` WHERE YEAR(date) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) AND MONTH(date) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH);

用 MySQL 函數的優點是不用設定 PHP 變數,雖然乍看之下有點複雜,但其實也不難,簡單來說就是用 MySQL 的 YEAR 函數,判斷資料表中 date 的年份等於上個月的資料,同時再用 MONTH 函數判斷月份等於上個月的資料,這裡用了 AND 表示兩個條件都要滿足,這就會查詢出年分與月份都剛好等於上個月的資料,也就是 Peter 及 Michelle 這兩筆資料。

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