php - 将日期与数据库进行比较(birthdate)

时间:2014-04-25 09:53:47

标签: php

所以我在数据库中有一行叫做birthday,其值为let,比如2001-04-25(DATE类型)。 我想看看它是否是用户生日。 我现在每个月都有:

$monthday_today = date('m-d');

而不是查询:

$query = "SELECT * FROM users WHERE DATE_FORMAT(birthday, '%m-%d')=".$monthday_today;

但它没有用,有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您需要引用$ monthday_today值。

您查询(如果要输出)将如下所示:

SELECT * FROM users WHERE DATE_FORMAT(birthday, '%m-%d') !=  04-2014

但这不是一个正确的SQL查询,查询应如下所示:

SELECT * FROM users WHERE DATE_FORMAT(birthday, '%m-%d') !=  '04-2014'

简单的解决方案是:

$query = "SELECT * FROM users WHERE DATE_FORMAT(birthday, '%m-%d')!="."'".$monthday_today."'";

好的解决方案是使用带有位置或命名参数的参数化预处理语句:

$query = "SELECT * FROM users WHERE DATE_FORMAT(birthday, '%m-%d') != ?";

或者

$query = "SELECT * FROM users WHERE DATE_FORMAT(birthday, '%m-%d') != :monthday_today";

您不需要引用参数化的预准备语句,因为它们会推断(推断)是否需要通过变量类型进行引用。

答案 1 :(得分:1)

有一个更简单的解决方案,不需要PHP:

$query = "SELECT * FROM users WHERE YEAR(birthday) = YEAR(NOW()) AND MONTH(birthday) = MONTH(NOW())";