我正在写一点PHP,但我是一个严肃的nOOb。
我想将当前时间(现在的时间)与表格中的时间戳进行比较,存储方式如1085225495.
如果时间戳不到1小时,请执行以下操作:
UPDATE TABLE SET visible=0;
否则忽略。
php中的任何想法?
答案 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)
这里:
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