在最近30分钟内从my-sql数据库中恢复数据

时间:2013-02-11 07:33:34

标签: php mysql

我正在使用数据库表,其中包含以下详细信息:

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)";

5 个答案:

答案 0 :(得分:1)

"SELECT * FROM table1 WHERE time > (time(now()) - INTERVAL 30 MINUTE) 
 and date=CURDATE()";

最佳解决方案是,如果您能够更改数据库表,然后将日期字段更改为时间戳并删除时间字段。那么上面的查询就可以了。否则将以下代码与当前的数据库结构一起使用。

"SELECT * FROM table1 WHERE time > time(time(now())-interval 30 minute) 
 and date=CURDATE()";
认为它会起作用。感谢。

答案 1 :(得分:1)

你有两个独立的字段,一个用于日期,一个用于时间,所以你可以使用这样的字段:

SELECT *
FROM table1
WHERE
  UNIX_TIMESTAMP(date) + TIME_TO_SEC(time) >=
  UNIX_TIMESTAMP(NOW() - INTERVAL 30 MINUTE)

UNIX_TIMESTAMP会将date转换为自1970-01-01以来的秒数,我们会使用time_to_sec添加时间部分的秒数,并将结果与​​NOW()-INTERVAL 30 MINUTE进行比较,转换为秒。

答案 2 :(得分:1)

SELECT * FROM table1 WHERE time BETWEEN CURTIME() AND  TIME(DATE_SUB(NOW(), INTERVAL 30 MINUTE))

希望这可以帮到你

答案 3 :(得分:0)

检查

SELECT * FROM table1 
WHERE date=CURDATE() AND TIME_TO_SEC(time) > TIME_TO_SEC(CURRENT_TIME()) - 1800

答案 4 :(得分:0)

Select * from table1 where concat (date, ' ', time) > ( now() - interval 30 minute)