Php 在过去30分钟内从我的sql数据库检索数据
我使用的数据库表包含以下详细信息:Php 在过去30分钟内从我的sql数据库检索数据,php,mysql,Php,Mysql,我使用的数据库表包含以下详细信息: Column Number | Column name | Data type --------------------------------------------- 1 | cardid | int(5) 2 | price | decimal(5,2) 3 | isbuyprice | int(1) 4 | date |
Column Number | Column name | Data type
---------------------------------------------
1 | cardid | int(5)
2 | price | decimal(5,2)
3 | isbuyprice | int(1)
4 | date | date
5 | time | time
现在,我想检索在过去30分钟内插入到表中的数据。我尝试使用以下代码,但它检索到了表中的所有行:
"SELECT * FROM table1 WHERE time > (now() - INTERVAL 30 MINUTE)";
最好的解决方案是,如果您能够更改db表,然后将日期字段更改为时间戳,并删除时间字段。那么上面的查询就可以工作了。否则,请将下面的代码与当前的db结构一起使用
"SELECT * FROM table1 WHERE time > time(time(now())-interval 30 minute)
and date=CURDATE()";
我认为它会起作用。谢谢
最好的解决方案是,如果您能够更改db表,然后将日期字段更改为时间戳,并删除时间字段。那么上面的查询就可以工作了。否则,请将下面的代码与当前的db结构一起使用
"SELECT * FROM table1 WHERE time > time(time(now())-interval 30 minute)
and date=CURDATE()";
我认为它会起作用。谢谢。检查这个
SELECT * FROM table1
WHERE date=CURDATE() AND TIME_TO_SEC(time) > TIME_TO_SEC(CURRENT_TIME()) - 1800
检查这个
SELECT * FROM table1
WHERE date=CURDATE() AND TIME_TO_SEC(time) > TIME_TO_SEC(CURRENT_TIME()) - 1800
您有两个单独的字段,一个用于日期,另一个用于时间,因此可以使用如下内容:
SELECT *
FROM table1
WHERE
UNIX_TIMESTAMP(date) + TIME_TO_SEC(time) >=
UNIX_TIMESTAMP(NOW() - INTERVAL 30 MINUTE)
将从1970-01-01将日期转换为秒,我们将时间部分的秒数与时间添加到秒,并将结果与时间间隔30分钟转换为秒进行比较。您有两个单独的字段,一个用于日期,一个用于时间,因此您可以使用如下内容:
SELECT *
FROM table1
WHERE
UNIX_TIMESTAMP(date) + TIME_TO_SEC(time) >=
UNIX_TIMESTAMP(NOW() - INTERVAL 30 MINUTE)
Select * from table1 where concat (date, ' ', time) > ( now() - interval 30 minute)
将从1970年1月1日起将日期转换为秒,我们将时间部分的秒数与时间添加到秒,并将结果与时间间隔30分钟转换为秒进行比较
Select * from table1 where concat (date, ' ', time) > ( now() - interval 30 minute)
希望这能对你有所帮助
希望这可以帮助您不,这不会起作用,例如当NOW()为
2013-02-10 00:15:00时,它不会返回最后30分钟的行。不,这不会起作用,例如当NOW()为2013-02-10 00:15:00时,它不会返回最后30分钟的行。