MySQL: Aktuelles Datum oder Zeit in Spalte schreiben
Tutorial von Stefan Trost | Letztes Update am 02.03.2023 | Erstellt am 04.12.2011
Häufig muss man das aktuelle Datum oder die aktuelle Zeit in eine MySQL Tabelle schreiben. Zum Beispiel wenn es darum geht, den letzten Login oder eine andere Zeit zu protokollieren.
Natürlich könnte man den Eintrag auch per PHP vorbereiten, aber MySQL stellt uns bereits einige nützliche und deutlich einfacher zu verwendende Funktionen zur Verfügung, die wir in diesem Zusammenhang verwenden können.
In diesem Artikel möchten wir uns dazu die folgenden Anwendungsbeispiele ansehen:
- Datum mit Zeit eintragen
- Datum oder Zeit eintragen
- Datum und Zeit automatisch eintragen
- Datum und Zeit automatisch updaten
Datum mit Zeit eintragen
Wenn wir das Datum und die Zeit eintragen möchten, zum Beispiel in einer TIMESTAMP oder DATETIME Spalte, können wir einfach die Funktion NOW() verwenden. Zum Beispiel so:
UPDATE tabelle SET spalte_timestamp = NOW();
NOW() sorgt automatisch dafür, dass das aktuelle Datum mit der Zeit eingetragen wird, also zum Beispiel "2022-12-18 11:33:25".
Datum oder Zeit eintragen
Wenn wir nur das Datum oder nur die Zeit eintragen möchten, können wir dafür die Funktionen CURDATE() und CURTIME() verwenden. Hier ist eine Beispiel für die Verwendung beider Funktionen:
UPDATE tabelle SET spalte_nurdatum = CURDATE(); UPDATE tabelle SET spalte_nurzeit = CURTIME();
CURDATE() würde zum Beispiel "2022-12-18" eintragen und CURTIME() zum Beispiel "11:33:25". Als Datentyp dieser beiden Spalte könnte man DATE oder TIME verwenden, die im Gegensatz zu TIMESTAMP und DATETIME nur den Datumsteil beziehungsweise den Zeitteil enthalten.
Datum und Zeit automatisch eintragen
In manchen Fällen geht es noch einfacher und wir können MySQL die komplette Arbeit überlassen. Zum Beispiel dann, wenn das aktuelle Datum und die aktuelle Zeit automatisch beim Erstellen eines neuen Datensatzes in eine Spalte eingetragen werden sollen. Das einzige was in diesem Fall zu tun ist, ist folgende Definition für die betreffende Spalte zu verwenden:
spalte_auto_create TIMESTAMP DEFAULT CURRENT_TIMESTAMP
Indem wir den Default-Wert einer TIMESTAMP-Spalte oder einer DATETIME-Spalte auf "CURRENT_TIMESTAMP" setzen, müssen wir uns nicht mehr um das manuelle Setzen des Timestamps kümmern. Jedes Mal wenn ein neuer Datensatz zur Tabelle hinzugefügt wird, erhält die betreffende Spalte den Wert des aktuellen Datums inklusive der aktuellen Zeit automatisch. Sinnvoll kann diese Funktion zum Beispiel bei Log-Einträgen oder für die Speicherung der Kommentare einer Kommentarfunktion sein, die mit dem aktuellen Datum protokolliert werden sollen.
Datum und Zeit automatisch updaten
MySQL bietet uns nicht nur die Möglichkeit an, das aktuelle Datum und die aktuelle Zeit automatisch beim Eintragen zu setzen, sondern auch beim Updaten eines Datensatzes. Auch in diesem Fall brauchen wir einfach nur die Spaltendefinition anpassen und haben dabei 2 Möglichkeiten:
spalte_auto_update TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
Mit dieser Spaltendefinition ist der Wert der Spalte beim Eintragen zunächst "0". Erst mit dem ersten Update wird der Wert der Spalte auf die aktuelle Zeit gesetzt.
Falls wir den Wert der Spalte schon beim Eintrag auf die aktuelle Zeit setzen möchten, können wir den DEFAULT-Wert von "0" einfach auf "CURRENT_TIMESTAMP" setzen und erhalten:
spalte_auto_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Mit dieser Spaltendefinition wird der Wert der Spalte direkt beim Erstellen auf das aktuelle Datum und die aktuelle Uhrzeit gesetzt. Mit jedem Update des Datensatzes wird der Wert aktualisiert und protokolliert so die letzte Änderung des Datensatzes. Nutzen könnte man diese Funktion zum Beispiel in einem Blog, in dem zu den Artikeln nicht nur das Erstelldatum sondern auch das letzte Änderungsdatum angezeigt werden soll, so wie es hier auch bei den Themen und Kommentaren auf AskingBox geschieht.
Vorsicht ist bei dieser Funktion allerdings geboten, wenn in dem Datensatz auch Daten enthalten sind, deren Update keine Aktualisierung der Zeit hervorrufen soll. Ein Beispiel wären die Klickzahlen einer Internetseite. Werden diese zusammen mit dem Text der Seite innerhalb eines Datensatzes gespeichert, möchte man sicherlich nicht, dass mit jedem Update der Klickzahl auch das Änderungsdatum des Datensatzes aktualisiert wird. In diesem Fall müssen wir dann auf die zuerst vorgestellte Funktion NOW() zurückgreifen und eine Aktualisierung manuell nur dann durchführen, wenn sie gewünscht ist.
Über den Autor
Software von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen
Ähnliche Themen
MySQL: Zeilenumbrüche in MySQL
Tipp | 0 Kommentare
MySQL: Neue Spalte zu einer Tabelle hinzufügen
Tutorial | 0 Kommentare
PHP: Aktuelles Datum und Zeit ermitteln
Tutorial | 0 Kommentare
MySQL: Suchergebnisse auf mehreren Seiten darstellen
Tutorial | 0 Kommentare
JavaScript: Aktuelle Uhrzeit und Datum ermitteln
Tutorial | 3 Kommentare
Android Programmierung: Daten per POST an WebView senden (zum Beispiel für automatischen Login)
Tipp | 0 Kommentare
MySQL: 3 Wege um Definitionen und Aufbau einer Tabelle anzuzeigen
Info | 0 Kommentare
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.