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

我們在用 PHP 進行查詢 MySQL 資料庫中"日期等於本月的資料"要怎麼寫呢?有兩種方式可以做到,分別是用 PHP 變數及用 MySQL 函數這兩種寫法,在這裡用簡單的範例做說明,假設我們在資料庫中的 table 資料表有四筆資料,分別如下:

id name date
1 Nick 2022-05-27
2 Peter 2022-05-26
3 Michelle 2022-04-25
4 Bill 2021-05-19

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

用 PHP 變數

$ThisMonth=date("Y-m");
SELECT name FROM table WHERE date LIKE '%$ThisMonth%';

這裡我們先設了一個 PHP 變數 $ThisMonth 並用 date 函數將變數的內容設為本月(2022-05),然後套用到 SELECT 查詢的 WHERE 子句中,利用 LIKE 來模糊查詢資料庫中 date 有 2022-05 的資料,所以這樣會查詢出 Nick 及 Peter 這兩筆資料。

用 MySQL 函數

SELECT name FROM table WHERE MONTH(date)=MONTH(now()) and YEAR(date)=YEAR(now());

此範例中使用了 MySQL的 MONTH()、now()、YEAR() 等函數,其中 MONTH 函數會返回各種日期格式的月份,例如 MONTH(2022-05-27) 會返回 5,NOW() 函數會返回現在的日期與時間,例如 2022-05-27 04:24:42 這樣的格式,把 now() 放在 MONTH() 函數中就會返回現在的月份,以範例來說就是 5 月。

YEAR() 函數則會返回一個日期的年份,例如 YEAR(2022-05-27) 就會返回 2022,now() 函數放在 YEAR() 函數中也會返回 2022,因為我們假設現在是 2022 年 5 月,範例中 YEAR(date)=YEAR(now()) 意思就是資料表中 date 年份等於今年的資料。

所以這整段 SQL 語法的 WHERE 子句意思就是「查詢資料表中 date 的月份等於這當月同時年份等於今年」,因此會查詢出 Nick 及 Peter 這兩筆資料。

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