我的目标是在我的表中查询两个日期之间存在的记录,并计算返回名称的次数。如果返回的值超过3,那么我将它打印到屏幕上。
由于某种原因,它对我不起作用。
使用MySQL运行PHP 5.3。
这是代码的一部分
<?php
$Today = @date('Y-m-d H:i:s');
echo "Current Date: " . $Today . "<br>";
$FirstDate = strtotime(date('Y-m-d') . ' -3 day');
echo "First date: " . (date('Y-m-d',$FirstDate)) . "<br>";
$result = mysqli_query($con,"SELECT * FROM mytablename WHERE DateTime > '" . $FirstDate . "'");
$num_rows = mysqli_num_rows($result);
echo $num_rows . "<br>";
代码从此处继续将其写入屏幕。那部分是有效的,所以我把它留了出来。
上述查询的结果只返回数据库中的所有记录,而不仅仅是当前日期-3天以上的记录。将变量$ FirstDate替换为&#39; 2014-12-12&#39;确实给出了预期的结果。
哪里出错了? ORDER BY DateTime DESC似乎正在正确排序,因此它确实将其视为日期。
答案 0 :(得分:3)
您也可以在SQL命令中定义它
SELECT * FROM mytablename WHERE DateTime > CURDATE() - INTERVAL 3 DAY
答案 1 :(得分:0)
当您说$FirstDate = strtotime(date('Y-m-d') . ' -3 day');
它将其转换为unix时间戳时,而不是日期字符串。试试这个:
$FirstDate = date('Y-m-d', strtotime('-3 days'));
答案 2 :(得分:0)
strtotime
返回一个unix时间戳,而不是Y-m-d字符串日期,这可能是你要找的......
$FirstDate = date('Y-m-d', strtotime('-3 days'));