可以编辑此内容...
SELECT *
FROM votelog
WHERE ipaddress = '127.0.0.1'
AND datevoted
BETWEEN DATE_SUB( CURDATE( ) , INTERVAL 24 HOUR )
AND CURDATE( )
LIMIT 0 , 30这是我试图在过去24小时内运行以查找帖子的查询的一个示例。在过去的60分钟内,我还为不同的需求运行了一个单独的。问题是,我正在测试的表中至少有4行,其中3行属于24小时子句。
编辑
好了,我想明白我的问题了,我太累了..2 Between和Date_Sub的糟糕用法..直到现在我才意识到,我应该在CURDATE()要回答我自己的问题的地方使用CURDATE。
这就是数据库中的时间戳,标准的日期时间。2011-09-01 13:20:08
如上所述,我没有产生任何结果。
发布于 2011-09-03 18:22:42
您没有正确使用BETWEEN,正确的语法是:
表达式介于最小值和最大值之间
您应该将查询的结尾更改为:
...BETWEEN DATE_SUB(CURDATE(), INTERVAL 24 hour) AND CURDATE()或者使用>运算符。
发布于 2011-09-03 18:20:06
$query = "SELECT * FROM votelog WHERE ID=".(int)$_GET['id']." AND ipaddress='".mysql_real_escape_string(getRealIpAddr())."' AND datevoted > DATE_SUB(CURDATE(), INTERVAL 24 hour)";编辑:由于ID不是string类型,所以用(int)$_GET['id']代替mysql_real_escape_string($_GET['id'])即可。
发布于 2011-09-03 18:24:12
你试过这个吗?BETWEEN需要一个AND你知道..。
$query = "SELECT * FROM votelog WHERE ID=".mysql_real_escape_string($_GET['id'])." AND ipaddress='".mysql_real_escape_string(getRealIpAddr())."' AND datevoted BETWEEN DATE_SUB(CURDATE(), INTERVAL 24 HOUR) AND DATE_SUB(CURDATE(), INTERVAL 60 MINUTE)"; 我认为你可以像这样做
$query = "SELECT * FROM votelog WHERE ID=".mysql_real_escape_string($_GET['id'])." AND ipaddress='".mysql_real_escape_string(getRealIpAddr())."' AND datevoted >= DATE_SUB(CURDATE(), INTERVAL 24 HOUR) AND datevoted <= DATE_SUB(CURDATE(), INTERVAL 60 MINUTE)"; https://stackoverflow.com/questions/7292502
复制相似问题