我正在写一点PHP,但我是一个严肃的人。PHP通过MySQL返回结果基于timeStamp和当前时间
我想当前时间(现在的时间),在表中的时间戳,存储像1085225495.
比较如果时间戳在1小时前的,然后做:
UPDATE TABLE SET visible=0;
否则忽略。
任何想法在PHP?
我正在写一点PHP,但我是一个严肃的人。PHP通过MySQL返回结果基于timeStamp和当前时间
我想当前时间(现在的时间),在表中的时间戳,存储像1085225495.
比较如果时间戳在1小时前的,然后做:
UPDATE TABLE SET visible=0;
否则忽略。
任何想法在PHP?
什么是这样的:
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时间戳
你也可以做3600秒的减法UNIX_TIMESTAMP(now())
,而是采用SUBDATE ...但我喜欢SUBDATE来电:我觉得它更容易立刻知道你是想1小时(而不是一个神奇的数字像3600)
这里有一个办法做到这一点完全的MySQL
UPDATE foo SET visible=0
WHERE (UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(timestamp))<3600;
UNIX_TIMESTAMP()给你的秒数从新纪元,并从当前秒减去时间戳秒让你在几秒钟的年龄。
UPDATE TABLE SET visible = 0 WHERE myTimestamp >= UNIX_TIMESTAMP(CURTIME()) - 3600
$ myQueryUpdate = “UPDATE mdl_course SET visible = 0 WHERE myTimestamp> = CURTIME() - 3600 AND metacourse = 0”; 为什么不能正常工作? – CLiown 2009-09-17 17:04:19
我如何使用PHP代码作为代码? – CLiown 2009-09-17 17:05:16
您可以像使用mysql_query(或mysqli或PDO等价物)一样使用该查询,就像您现在正在做的一样 - 唯一的一点是您不需要在PHP端进行任何计算:所有操作都是由一个查询。 – 2009-09-17 17:08:44