Zeitdifferenz

Grunge

Erfahrenes Mitglied
HI,

ich habe ein folgendes Problem:

Ich möchte eine Abfrage schreiben, in der nur die Spalten selektiert werden wo der zeitwert einer anderen Spalte (datum mit Zeit, format: 0000-00-00 00:00:00) zur aktuellen zeit nicht mehr als x minuten (x soll also varrierbar sein) differenz haben darf. also beispiel:

ich habe die tabelle "table1" mit den spalten "datetime" und "name"

in datetime steht: 2006-03-01 18:20:33 (also etwa aktuelle zeit und datum)
in name steht "Grunge"

x ist 15

und die aktuelle zeit ist sagen wir mal 18:30:35 => also ist noch weniger differenz als x zwischen den beiden zeiten und somit soll der name "GRUNGE" ausgelesen werden. etwa fünf minuten später wäre dies nich mehr der fall..

hoffe ihr habt das verstanden mir würde schon eine erläuterung ohne quellcode völlig reichen (wer lust hat was zu tippseln - bin ich abgeneigt). bin mit der funktion explode vertraut und kann datum und zeit von einander trennen und in andere variablen (verschiedene) auslesen

danke im vorraus ! !
 
Falls die Daten innerhalb der Unix-Zeit sind, könntest du sie dahin formatieren:
Code:
SELECT
        …
  FROM
        …
  WHERE
        UNIX_TIMESTAMP(`datum-a`) - UNIX_TIMESTAMP(`datum-b`) <= X
 
Die Unix-Zeit oder das Unix-Zeit-Format beschreibt die seit dem 1. Januar 1970 vergangene Zeit in Sekunden. Es eignet sich zum Berechnen von Zeitdifferenzen am besten.
 
Okay also ich hab es nun so probiert:

PHP:
$sql = 'SELECT activity
           FROM user_online ';
      
		   
		    $query = mysql_query($sql) OR die(mysql_error());
			
			while (mysql_fetch_assoc($query)){
			$x=15;
$sql2="SELECT user FROM user_online WHERE activity='".UNIX_TIMESTAMP(`$query['activity']`) - UNIX_TIMESTAMP(`.'"NOW()"'.`)."' <='". $x."'";
			$query2 = mysql_query($sql2) OR die(mysql_error());
			$user=mysql_fetch_assoc($query2);
			
			echo $user['user']; 
			}

aber das funktioniert nicht. ich bekomme folgenden fehler

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/export/www/hosting/ruelingpunks/html_design_neu/html/test.php on line 52

zeile 52 ist in diesem fall die abfrage sql2
 
okay . . . mhh gut das hab ich nun geänder in folgendes:

PHP:
$sql2='SELECT user FROM user_online WHERE activity=UNIX_TIMESTAMP(`'.$query['activity'].'`) - UNIX_TIMESTAMP(`NOW()`) <= $x';

aber nun sagt er mir

Unknown column '' in 'where clause'

wieso das!?, hab probiert das $x auch durch '. anzuhängen, doch das bringt nichts, und wenn ich die variable $query['activity'] nicht so schreibe, dann kommt der selbe fehler wie eben
 
Probier mal Folgendes:
PHP:
$query = '
	SELECT
	         `user`
	  FROM
	        `user_online`
	  WHERE
	        UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(`activity`) <= 60';
Die 60 entspricht dabei 60 Sekunden.
 
Zurück