2012-08-07 16 views
1

行我有這個數據MYSQL查詢得到一個小時的時差

id  user_id latitude  longitude  updated_at 
1  1   13.21   102.41   2012-08-06 13:24:06 
1  1   13.31   102.52   2012-08-06 13:54:06 
1  1   13.51   102.65   2012-08-06 14:24:06 
1  1   13.61   102.33   2012-08-06 14:34:06 
1  1   13.71   102.57   2012-08-06 15:24:06 
1  1   13.81   102.90   2012-08-06 16:24:06 

我想從last updated time1小時差異檢索所有行的MySQL表。

即如果我在2012-08-06 16:24:06搜索我只想讓這些行

1  1   13.21   102.41   2012-08-06 13:24:06 
1  1   13.51   102.65   2012-08-06 14:24:06 
1  1   13.71   102.57   2012-08-06 15:24:06 
1  1   13.81   102.90   2012-08-06 16:24:06 
+1

你嘗試過什麼樣的代碼? – 2012-08-07 07:31:25

+0

請問mysql有什麼直接的查詢嗎? – Warrior 2012-08-07 07:33:02

+0

我想如果你保留上次更新時間,你可以使用這個時間參數進行查詢。 '$ lastUpdateTimeThatIKnow =「2012-08-06 16:24:06」; SELECT * FROM .... WHERE updated_at> ='$ lastUpdateTimeThatIKnow'' – 2012-08-07 07:48:07

回答

1

MySQL有函數提取從給定時間的小時,分​​鍾和秒的一部分。您可以使用它來比較當前的秒數和分鐘數,以及字段中的秒數和分鐘數。

WHERE SECOND(updated_at) = SECOND(CURTIME()) AND MINUTE(updated_at) = MINUTE(CURTIME()) 
+0

如果updated_time與當前時間匹配,這將只給出一行? – Warrior 2012-08-07 07:40:06

+0

不,它會爲您提供具有相同分秒值的所有行,例如您在樣本中。但使用Omesh的答案,它以相同的方式,但以更優雅的方式。 – Hinek 2012-08-07 07:43:47

3

試試這個:

SELECT * 
FROM table_name 
WHERE DATE_FORMAT(updated_at, '%i%s') = DATE_FORMAT(CURRENT_TIMESTAMP, '%i%s'); 

SQLFiddle Demo

+0

我編輯了我的問題。檢索與上次更新時間相差一小時的所有行。 – Warrior 2012-08-07 08:15:34

+0

準確的預期產出是多少? – Omesh 2012-08-07 09:26:50