2009-09-17 50 views
0

我正在寫一點PHP,但我是一個嚴肅的人。PHP通過MySQL返回結果基於timeStamp和當前時間

我想當前時間(現在的時間),在表中的時間戳,存儲像1085225495.

比較如果時間戳在1小時前的,然後做:

UPDATE TABLE SET visible=0; 

否則忽略。

任何想法在PHP?

回答

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時間戳


你也可以做3600秒的減法UNIX_TIMESTAMP(now()),而是採用SUBDATE ...但我喜歡SUBDATE來電:我覺得它更容易立刻知道你是想1小時(而不是一個神奇的數字像3600)

+0

我如何使用PHP代碼作爲代碼? – CLiown 2009-09-17 17:05:16

+0

您可以像使用mysql_query(或mysqli或PDO等價物)一樣使用該查詢,就像您現在正在做的一樣 - 唯一的一點是您不需要在PHP端進行任何計算:所有操作都是由一個查詢。 – 2009-09-17 17:08:44

0

這裏有一個辦法做到這一點完全的MySQL

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

UNIX_TIMESTAMP()給你的秒數從新紀元,並從當前秒減去時間戳秒讓你在幾秒鐘的年齡。

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

$ myQueryUpdate = 「UPDATE mdl_course SET visible = 0 WHERE myTimestamp> = CURTIME() - 3600 AND metacourse = 0」; 爲什麼不能正常工作? – CLiown 2009-09-17 17:04:19

相關問題