2011-02-25 67 views
2

我有一个MySQL数据库,看起来像这样时间戳:如何检测PHP/MySQL中是否已经过了一段时间?

2011-02-23 20:39:49 

我怎样才能检测是否自创建该时间戳的一定时间已经过去了。换句话说,如果时间戳创建于2010年2月23日晚上8点39分43秒如何检测自创建此时间戳以来是否完全过去了10天(240小时)?如何在PHP中做到这一点?

+0

为什么不在SQL中做,MySQL可以计算出比PHP更好的日期。 – AndreKR 2011-02-25 01:45:20

+0

@AndreKR我猜在MySQL中这样做也不错,只要结果被发送回PHP脚本。而通过“结果”,我的意思是简单的是,它已经10天或没有它没有。 – Jacobson 2011-02-25 01:47:59

+1

你*绝对*想在MySQL中做到这一点。否则你会做什么?选择整个表,将整个表从慢速硬盘读取,将整个表缓存到内存中,通过套接字/管道将整个表发送到PHP,将整个表缓存到那里的内存中,然后遍历每行并比较日期?不,您只需向MySQL询问10天以上的情侣行! – 2011-02-25 01:50:41

回答

6
SELECT * 
FROM table 
WHERE timestampcol < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 10 DAY) 
+0

+1从现在起减去10天,而不是将10天添加到列。 – 2011-02-25 01:50:53

+0

是的,这是一个很好的方式去 – ctcherry 2011-02-25 01:51:42

+0

谢谢,伟大的作品。 – Jacobson 2011-02-25 02:00:12

0
$isDone = time() - strtotime($row['time']) >= 240 * 3600; 
+0

Crikey。我回应了“如何在PHP中执行此操作?”在澄清之前。别紧张。 – 2011-02-25 01:53:18

0
select id 
from foo 
where date_field+interval 10 day >NOW() 
+0

如果修改右侧日期时间而不是字段,则更好,因为对该字段应用函数意味着其上的索引无法使用。 – 2011-02-25 01:51:31

+0

感谢提示 – 2011-02-25 01:53:41

0

在SQL为MySQL:

SELECT * FROM mytable WHERE DATE_ADD(date_column, INTERVAL 10 DAY) > NOW() 

这个查询就会发现其中date_column包含datetime值10多天到从当前时间的未来的任何行。

0
SELECT the_timestamp < NOW() - INTERVAL 240 HOUR AS more_than_240_hours_ago FROM table 
+0

如果你的意思是10天,你可以使用'INTERVAL 10 DAY'。 – AndreKR 2011-02-25 01:55:21

相关问题