我正在寫一點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