将PHP日期与MySQL日期类型进行比较

时间:2013-04-12 15:44:37

标签: php mysql date

初学者的问题。我需要找到我的数据库中与昨天的日期约会的所有记录。此列是DATE类型。

在php中:

$yesterday =  date('Y-m-d', strtotime($Date. ' - 1 day'));

按预期生产'2013-04-11'。但是当我尝试

$gamesQuery = mysqli_query($con,"SELECT * FROM scores WHERE home_team = $teamId AND game_date = $yesterday");

我没有比赛。我的数据库中肯定有一条记录,其中有game_date = 2013-04-11。

(我发现了许多类似的SO问题,但没有足够基本的帮助)。

5 个答案:

答案 0 :(得分:2)

使用此(仅限sql):

SELECT * 
  FROM scores 
 WHERE home_team = $teamId 
   AND DATE(game_date) = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))

答案 1 :(得分:1)

尝试:

 $gamesQuery = mysqli_query($con,"SELECT * FROM scores WHERE home_team = $teamId AND DATE(game_date) = '{$yesterday}'");

我一直在使用它来处理很多与mysql相关的查询。

答案 2 :(得分:0)

如果game_date字段采用日期时间格式,则不匹配,因为值不相同。使用DATE()首先提取日期,然后进行比较。

SELECT * FROM scores WHERE home_team = $teamId AND DATE(game_date) = $yesterday

答案 3 :(得分:0)

我认为你的问题是如何在php vs mysql中使用和存储日期的差异。试试http://www.richardlord.net/blog/dates-in-php-and-mysql

这不仅会给你答案,而且会教你答案;)

答案 4 :(得分:0)

我也会尝试设置正确的格式:

$yesterday =  date('Y-m-d', strtotime($Date. ' - 1 day'));
$gamesQuery = mysqli_query($con,"SELECT * FROM scores WHERE home_team = ".$teamId." AND date_format(game_date,'%Y-%m-%d') = ".$yesterday);