PHP通过MySQL返回结果基于timeStamp和当前时间

时间:2009-09-17 16:55:56

标签: php

我正在写一点PHP,但我是一个严肃的nOOb。

我想将当前时间(现在的时间)与表格中的时间戳进行比较,存储方式如1085225495.

如果时间戳不到1小时,请执行以下操作:

UPDATE TABLE SET visible=0;

否则忽略。

php中的任何想法?

3 个答案:

答案 0 :(得分:1)

这样的事情:

update your_table
set visible = 0
where your_timestamp_field >= UNIX_TIMESTAMP(subdate(now(), interval 1 hour))


作为解释,这里有一个可能对你有用的选择:

mysql> select now(), subdate(now(), interval 1 hour), UNIX_TIMESTAMP(subdate(now(), interval 1 hour))\G
*************************** 1. row ***************************
                                          now(): 2009-09-17 18:58:31
                subdate(now(), interval 1 hour): 2009-09-17 17:58:31
UNIX_TIMESTAMP(subdate(now(), interval 1 hour)): 1253203111
1 row in set (0.00 sec)

这里:

  • now()获取当前日期和时间
  • subdate()现在提前1小时
  • unix_timestamp()将其转换为unix时间戳


您也可以在UNIX_TIMESTAMP(now())上做3600秒的减法,而不是使用子数据......但我喜欢调用子句:我发现更容易立即理解你想要1小时(而不是魔术数字如3600)

答案 1 :(得分:0)

这是完全在MySQL中完成它的一种方法

UPDATE foo SET visible=0 
WHERE (UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(timestamp))<3600;

UNIX_TIMESTAMP()为您提供自纪元以来的秒数,并从当前秒数中减去时间戳秒数,为您提供以秒为单位的年龄。

答案 2 :(得分:0)

UPDATE TABLE SET visible = 0 WHERE myTimestamp >= UNIX_TIMESTAMP(CURTIME()) - 3600