用 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 這兩筆資料。