MySQL SELECT WHERE date 等于本月的条件判断写法

我们在用 PHP 进行查询 MySQL 数据库中“日期等于本月的数据”要怎么写呢? 有两种方式可以做到,分别是用 PHP 变量及用 MySQL 函数这两种写法,在这里用简单的范例做说明,假设我们在数据库中的 table 资料表有四笔数据,分别如下:

idnamedate
1Nick2022-05-27
2Peter2022-05-26
3Michelle2022-04-25
4Bill2021-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 这两笔资料。

(1)
打赏 微信扫一扫 微信扫一扫

相关推荐

发表回复

登录后才能评论