2012-04-14 11 views
0

Mögliche Duplizieren:
count date difference in hours using php and mysqlÜberprüfen Sie den Zeitunterschied zwischen zwei Zeiten?

Ich habe eine MySQL-Tabelle, in der es eine Spalte some_column. Diese Spalte wird als datetime festgelegt und wenn sie aktualisiert wird, wird sie als NOW() aktualisiert.

Was ich tun möchte, ist Abfrage der db, dass some_column Wert, und überprüfen Sie die Zeitdifferenz zwischen was auch immer dort ist und die Zeit, die es ist, wenn Abfragen. Ich möchte sehen, ob mehr als 2 Stunden vergangen sind.

Wie mache ich das mit PHP? Oder mache ich das mit MySQL?

+0

@ hakre - Es ist nicht im selben Kontext, obwohl es fast dasselbe ist. – Roland

+0

@hakre - Kein Problem, ich habe gerade diese Frage nicht gefunden, ich fand andere, aber nicht so nah wie diese Sie gepostet :) – Roland

Antwort

2
SELECT IF(TIMEDIFF(NOW(),`some_column`) > '02:00:00',1,0) FROM `table` 

Oder, wenn Sie versuchen, Zeilen zurückgeben, die vor mehr als zwei Stunden aktualisiert wurden:

SELECT * FROM `table` WHERE `some_column` < DATE_ADD(NOW(),INTERVAL -2 HOUR) 
+0

Ich bin nur auf der Suche, ob mehr als zwei Stunden vergangen sind, und wenn ja Ich werde alle Spalten mit neuen Daten aktualisieren :) – Roland

+0

Dann ist genau das, was Sie suchen. Feld # 0, das von der Abfrage zurückgegeben wird, ist entweder 1, wenn 2 Stunden oder mehr vergangen sind; Sonst 0. Sie könnten ihm einen Namen zuweisen, indem Sie "AS" verwenden (z. B. "SELECT IF (TIMEDIFF (NOW(),' some_column')> '02: 00: 00 ', 1,0) AS mehr als FROM 'table'"). Dann haben Sie $ row ['morethan'] abgerufen (und $ row [0]). – Qualcuno

+0

@qualcuno - Also wenn ich es auf diese Weise benutze: '$ sql =" SELECT IF (TIMEDIFF (NOW(), last_update)> '02: 00: 00 ', 1,0) AS mehr als FROM products "; \t \t if ($ stmt = $ this-> Verbinden-> Vorbereiten ($ sql)) { \t $ stmt-> execute(); \t \t \t $ stmt-> bind_result ($ time); \t \t \t $ stmt-> fetch(); \t \t \t $ stmt-> close(); \t \t} sonst { \t \t \t Rückgabe false; \t \t} 'was bekomme ich? Ich denke nichts. Ich will nur diese Zeitdifferenz bekommen und ich kann es nicht scheinen. – Roland

1
<?php 

$time = // Run query to get datetime value from db 

$time = strtotime($time); 

$dif = time()-$time; 

$dif = date('H', $dif); 

if($dif >= 2) 
{ 
    // Do something 
} 

?> 
+0

OK, dieser scheint mir passender zu sein – Roland

Verwandte Themen