我有以下代码,但它似乎没有产生预期的结果:
$date_from = '2012-04-27 18:19:33';
$date_to = '2012-05-29 00:59:57';
$database->connect();
$ancestors = mysql_query('
SELECT * FROM ' . $database->db_prefix . 'comments e
WHERE e.created BETWEEN "' . $date_from . '" AND "' . $date_to . '" AND
e.ancestors = "' . $comment["id"] . '" AND e.user_id != "' . $user->user_object["id"] . '" AND
NOT EXISTS
(
SELECT null
FROM ' . $database->db_prefix . 'notifications d
WHERE d.target_id = e.id
)
ORDER BY e.created DESC
', $database->connection_handle);
$database->close();
这可能是一个愚蠢的错误..但是当我不确定 BETWEEN 之间的 select 语句和正在使用的日期是否是有效的 MYSQL 事物时,我发现很难确定。
任何帮助都会很棒。我一直在搜寻,我所做的似乎是正确的,因此造成了混乱。
编辑//
我在 date_from 和 date_to 日期之间发表了很多评论,并且通知表中没有通知(不存在部分)...所以基本上,我应该收到大约 25 条评论...相反,我只收到一条返回的评论,其中包含日期 2012-05-29 00:23:39
编辑//
是因为您只能比较日期与日期......以及时间与时间吗?我该如何调整 mysql 才能做到这一点?
编辑//
这肯定是 Between 函数出了问题。我真的不确定到底出了什么问题。
- 可以返回两个日期之间的记录吗?
- 你能给个例子吗?
编辑//
问题已经解决了。这与查询无关,因此可以肯定地说这是正确的方法。我以一种疯狂的方式完成了我的日期范围。感谢你们所有的帮助!
In the MySQL 文档 http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#operator_between它指出你应该使用CAST http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast当将 Between 与日期或时间值一起使用时,因此您的查询应按如下方式编写。
WHERE e.created BETWEEN CAST("' . $date_from . '" AS DATETIME) AND CAST("' . $date_to . '" AS DATETIME) ...
如果您没有得到预期的结果,这可能会解决您的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)