Problem: time() in DB schreiben

Tucker

Erfahrenes Mitglied
Ich habe ein recht merkwürdiges Problem. Ich will mir den aktuellen timestamp in die Datenbank schreiben lassen. Allerdings wird dabei kein timestamo mit 10 Stellen in die DB geschrieben, sondern nur einer mit 7.
Das ist nun natürlich fatal, wenn man mit der aktuellen Zeit und der in der DB gespeichereten rechenen will, z.B. in Form eines onlin-scriptes.

Hier der Query:
PHP:
$sql="UPDATE `ssv_user` SET `online` = '".time()."' WHERE `id` = '".$array[0]."'";

Und hier mal ein Beispiel, um mir die User auszugeben, die online sind:
PHP:
mysql_query("SELECT * FROM `ssv_user` WHERE `online` > " . $dtime . " AND `online` != '0'  AND `online` != '2006'") or die(mysql_error());

Durch die unterschiedliche Stellenzahl, wird in dem Query ein 7-stellige timestamp mit einem 10-stelligen verglichen. Da liegt ja auf der Hand, dass der 7-stellige kleiner ist. Somit wird man ständig als online angezeigt.
 
Bei Mediumint ist der grösste zulässige Wert 16777215, falls die Spalte UNSIGNED ist
.....ansonsten nur 8388607(ich nehme mal an, das ist es auch, was dort gespeichert ist)

Du musst einen anderen Spaltentyp wählen.
 
Es gibt extra in MySQL den Datentyp "timestamp", welcher dafür sehr gut geeignet ist..... :)

mfg
 
Die Wahl des Datentyps/Datenformats hängt vor allem davon ab, wo und in welchem Umfang damit gearbeitet werden soll. Wird damit nur oder hauptsächlich in MySQL gearbeitet, ist ein MySQL-eigener Datums- und Zeittyp sicherlich vorteilhaft, während bei einer überwiegend PHP-seitigen Verarbeitung der Daten der universelle Unix-Zeitstempel vorteilhaft wäre.

Hpvw – War das nicht damals eine schöne Diskussion?
 
Gumbo hat gesagt.:
Hpvw – War das nicht damals eine schöne Diskussion?
OT: Ja, man muss nur die ein oder andere spitzfindige Bemerkung streichen und hat eine nahezu vollständige sachliche Analyse von Vor- und Nachteilen. Oh, damals, als alles noch viel besser war...
 
Zurück