选择DateTime不起作用的查询

时间:2014-12-15 15:28:40

标签: php mysql datetime select

我的目标是在我的表中查询两个日期之间存在的记录,并计算返回名称的次数。如果返回的值超过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似乎正在正确排序,因此它确实将其视为日期。

3 个答案:

答案 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'));