我想从表格中检索所有记录,这些记录是使用php mysql在24小时后发布的(I want to retrieve all the records from a table which were posted 24 hours back using php mysql)
我想从表格中检索所有记录,这些记录是使用php mysql在24小时后发布的。 我可以使用datetime列获取最近24小时插入的记录。 但我想要的记录插入表中,并完成24小时发布。
请大家帮帮我!
I want to retrieve all the records from a table which were posted 24 hours back using php mysql. I can able to get last 24 hour inserted records using datetime column. But i want the records which were inserted into table and completed 24 hours from posting.
Please guys help me out!
原文:https://stackoverflow.com/questions/42330054
更新时间:2019-12-28 03:48
最满意答案
假设“日期”是你的日期时间列,“mytable”是你的表
SELECT * FROM mytable WHERE date <= DATE_SUB(NOW(), INTERVAL 24 HOUR)
Assuming that "date" is your datetime column and "mytable" is your table
SELECT * FROM mytable WHERE date <= DATE_SUB(NOW(), INTERVAL 24 HOUR)
2017-02-19
相关问答
您的日期已经有一个下限,但由于您的表可能有未来的日期,您还需要一个上限。 这应该工作: SELECT *
FROM my_table
WHERE date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
AND date <= NOW()
You already have a lower limit on the date, but since your table can have future dates you also need an upper limit.
...
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
假设“日期”是你的日期时间列,“mytable”是你的表 SELECT * FROM mytable WHERE date <= DATE_SUB(NOW(), INTERVAL 24 HOUR)
Assuming that "date" is your datetime column and "mytable" is your table SELECT * FROM mytable WHERE date <= DATE_SUB(NOW(), INTERVAL 24 HOUR)
您可以在表中添加列ts ALTER TABLE core
ADD COLUMN ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
这是一个时间戳,每次插入或更新行时,都会自动设置为机器上的当前时间。 然后你可以做 SELECT id, name, password FROM core
WHERE TIMESTAMPDIFF(HOUR, ts, NOW()) < 24;
它应该返回在过去24小时内添加或更新的
...
一个相当痛苦的方式来做到这一点(性能明智的)是与join / group by或apply运营商。 从性能角度来看, apply应该更好: select t.*
from t cross apply
(select count(*) as cnt
from t t2
where t2.iduser = t.iduser and
t2.creationdate >= t.creationdate and
t2.crea
...
不要在PHP中检查它,使用这样的简单查询来直接从数据库中获取答案。 select
count(*)
from
yourTableName
where
dateCol>date_sub(now(), interval 1 day)
and userID=...
这将给你计数。 编辑:正如鲍里斯指出的那样,这将计算每天,您可以更改它以检查最后24小时的时间段,如下所示: select
count(*)
from
yourTableNa
...
获取客户端的IP地址,并在记录不存在时将其与当前日期和时间一起存储。 获取记录并将24小时添加到其日期和时间值,并在每次执行脚本时使用当前日期和时间进行检查。 您需要if else条件语句来检查24小时时间是否结束。 基于此,您将控制您想要的功能的执行。 我想我不想写很多理论。 在这里,我编写了代码看起来像这样的模式: if(!$record_in_db) {
// create record with the client's ip address and the current dat
...
要获得最近24小时,请将1天前的时间转换为unix时间戳: UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))
要将时间戳转换回一小时,请先将其转换为时间,然后使用HOUR函数: HOUR(FROM_UNIXTIME(time))
结合这些,你可以做到: SELECT HOUR(FROM_UNIXTIME(time)) AS hour, COUNT(*)
FROM service_data
WHERE time >= UNIX_TIMESTAMP(D
...
以下是每10分钟数据获取一行的方法: select date(date_time), hour(date_time), floor(minute(date_time) / 6),
avg(active_energy)
from energy_readings
where date_time >= '2016-11-02' and datetime < '2016-11-03'
group by date(date_time), hour(date_time), floor(minut
...
SELECT * FROM stats WHERE STR_TO_DATE(timespan,"%W, %b %d %Y, %h:%i:%s %p") >= date_sub(now(), INTERVAL 1 DAY)
STR_TO_DATE会将您的字符串转换为日期格式(Ymd H:i:s)然后您可以将它与now()返回的日期进行比较 SELECT * FROM stats WHERE STR_TO_DATE(timespan,"%W, %b %d %Y, %h:%i:%s %p") >= d
...