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分钟的行。