首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL尝试从过去24小时和过去60分钟获取帖子失败

问mySQL尝试从过去24小时和过去60分钟获取帖子失败
EN

Stack Overflow用户
提问于 2011-09-03 18:14:02
回答 5查看 442关注 0票数 0

可以编辑此内容...

代码语言:javascript
复制
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

如上所述,我没有产生任何结果。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-03 18:22:42

您没有正确使用BETWEEN,正确的语法是:

表达式介于最小值和最大值之间

您应该将查询的结尾更改为:

代码语言:javascript
复制
...BETWEEN DATE_SUB(CURDATE(), INTERVAL 24 hour) AND CURDATE()

或者使用>运算符。

票数 3
EN

Stack Overflow用户

发布于 2011-09-03 18:20:06

代码语言:javascript
复制
$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'])即可。

票数 1
EN

Stack Overflow用户

发布于 2011-09-03 18:24:12

你试过这个吗?BETWEEN需要一个AND你知道..。

代码语言:javascript
复制
$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)"; 

我认为你可以像这样做

代码语言:javascript
复制
 $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)"; 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7292502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档