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