0

一个初学者的问题。我需要在我的数据库中找到与昨天日期一致的所有记录。此列是 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 问题,但没有足够基本的帮助)。

4

5 回答 5

2

使用这个(仅 sql):

SELECT * 
  FROM scores 
 WHERE home_team = $teamId 
   AND DATE(game_date) = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))
于 2013-04-12T15:54:06.380 回答
1

尝试:

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

我一直在使用它进行很多与 mysql 日期相关的查询。

于 2013-04-12T15:51:58.710 回答
0

如果您game_date的字段是日期时间格式,它将不匹配,因为值不相同。用于DATE()先提取日期,然后进行比较。

SELECT * FROM scores WHERE home_team = $teamId AND DATE(game_date) = $yesterday
于 2013-04-12T15:48:29.473 回答
0

我认为您的问题是日期在 php 和 mysql 中的使用和存储方式不同。试试http://www.richardlord.net/blog/dates-in-php-and-mysql

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

于 2013-04-12T15:51:33.147 回答
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);
于 2013-04-12T15:51:43.643 回答