1. Überblick über die MySQL NOW()-Funktion
Die MySQL NOW()-Funktion wird verwendet, um einfach das aktuelle Datum und die aktuelle Uhrzeit innerhalb der Datenbank abzurufen. Durch die Nutzung von NOW() können Sie Zeitstempelinformationen erhalten, die für Daten‑Einfügungen oder Protokollierung nützlich sind. Trotz ihrer Einfachheit ist sie ein leistungsfähiges Werkzeug, das in der Praxis weit verbreitet ist.
Grundsyntax von NOW()
Die Syntax der NOW()-Funktion ist sehr unkompliziert. Die folgende Abfrage ruft das aktuelle Datum und die aktuelle Uhrzeit ab:
SELECT NOW();
Das Ergebnis wird im Format YYYY-MM-DD HH:MM:SS zurückgegeben. Zum Beispiel, wenn das Datum und die Uhrzeit der 24. Oktober 2024 um 16:30 Uhr sind, würde das Ergebnis lauten:
2024-10-24 16:30:00
Zusätzlich gibt die NOW()-Funktion das aktuelle Datum und die aktuelle Uhrzeit basierend auf der Zeitzone der Datenbank zurück. Das sorgt für eine konsistente Zeitverwaltung im gesamten System.
Anwendungsfälle von NOW()
Die NOW()-Funktion ist besonders nützlich in den folgenden Szenarien:
- Protokollierung : Automatisches Aufzeichnen des Zeitpunkts von Datenänderungen oder Einfügungen.
- Zeitstempel : Verfolgen des Zeitpunkts von Benutzeraktionen.
- Zeitbasierte Filterung : Extrahieren von Daten, die innerhalb eines bestimmten Zeitraums aufgetreten sind.

2. Grundlegende Beispiele für die Verwendung von NOW()
Schauen wir uns ein einfaches Beispiel an, das das aktuelle Datum und die aktuelle Uhrzeit mit der NOW()-Funktion abruft:
SELECT NOW();
Diese Abfrage gibt das aktuelle Datum und die aktuelle Uhrzeit zurück. Neben dem Zeichenkettenformat können Sie das Ergebnis auch im numerischen Format erhalten. Mit der folgenden Abfrage wird das Datum und die Uhrzeit im numerischen Format (YYYYMMDDHHMMSS) zurückgegeben:
SELECT NOW() + 0;
Zum Beispiel könnte das Ergebnis als 20241024163000 zurückkommen, was bei der Verarbeitung von Daten im numerischen Format nützlich ist.
Angabe der Präzision für Bruchteile von Sekunden
Die NOW()-Funktion erlaubt es, die Präzision für Bruchteile von Sekunden anzugeben. Sie können die Präzision als Argument setzen:
SELECT NOW(3);
Diese Abfrage liefert ein Ergebnis mit drei Stellen Präzision für Bruchteile von Sekunden, z. B. 2024-10-24 16:30:00.123. Diese Funktion ist besonders hilfreich in Systemen, die Unter‑Sekunden‑Genauigkeit benötigen.
3. Unterschied zwischen SYSDATE() und NOW()
Eine weitere Funktion, die NOW() ähnlich ist, ist SYSDATE(), jedoch verhalten sie sich leicht unterschiedlich:
- NOW() : Ermittelt die Zeit zum Zeitpunkt der Abfrageausführung und behält dieselbe Zeit während der gesamten Anweisung bei. Auch wenn die Transaktion lange läuft, liefert sie dasselbe Ergebnis.
- SYSDATE() : Ermittelt die aktuelle Zeit bei jedem Schritt der Abfrage. Das bedeutet, dass bei langlaufenden Transaktionen Echtzeit‑Zeitstempel bereitgestellt werden.
Zum Beispiel liefert SYSDATE() bei langlaufenden Batch‑Prozessen genauere Ergebnisse, während NOW() bevorzugt wird, wenn Konsistenz innerhalb einer Transaktion erforderlich ist.
Beispiel für Unterschiede innerhalb einer Abfrage
Hier ein Beispiel, das den Unterschied zwischen SYSDATE() und NOW() zeigt:
SELECT NOW(), SYSDATE();
Die Ergebnisse könnten etwa so aussehen:
NOW(): 2024-10-24 16:30:00
SYSDATE(): 2024-10-24 16:30:01
SYSDATE() spiegelt den Echtzeit‑Unterschied zum Ausführungszeitpunkt wider, während NOW() den Zeitstempel vom Beginn der Abfrage beibehält. Die Wahl der richtigen Funktion hängt von Ihrem Anwendungsfall ab.

4. Praktische Anwendungsfälle von NOW()
Die NOW()-Funktion ist in bestimmten Szenarien besonders nützlich. Zum Beispiel, um automatisch den Einfügungszeitpunkt von Daten zu protokollieren:
INSERT INTO users (username, created_at)
VALUES ('example_user', NOW());
Damit wird beim Einfügen des Datensatzes automatisch die aktuelle Zeit in die Spalte created_at geschrieben. Das ist besonders wertvoll für Protokollierung oder Ereignis‑Tracking.
Um Daten zu extrahieren, die in den letzten 7 Tagen erstellt wurden, können Sie NOW() wie folgt verwenden:
SELECT * FROM orders
WHERE order_date >= NOW() - INTERVAL 7 DAY;
Diese Abfrage ruft alle Datensätze ab, die in den letzten 7 Tagen relativ zur aktuellen Zeit erstellt wurden. NOW() ist äußerst effektiv für zeitabhängige Datenabfragen.
5. Überlegungen bei der Verwendung von NOW()
Es gibt einige wichtige Überlegungen bei der Verwendung von NOW(). Insbesondere kann es die Transaktionskonsistenz beeinflussen, daher sollten Sie den Kontext, in dem es verwendet wird, im Auge behalten.
- Verhalten innerhalb von Transaktionen : Die NOW()-Funktion liefert konsistente Ergebnisse innerhalb einer Transaktion und stellt sicher, dass dieselbe Zeit auch bei langlaufenden Prozessen verwendet wird. Dies ist entscheidend für die Aufrechterhaltung der Datenintegrität. Wenn Sie jedoch Echtzeit‑Zeitstempel benötigen, ist SYSDATE() geeigneter.
Beachten Sie außerdem, dass die NOW()-Funktion von der Zeitzone des Systems abhängt, was bedeutet, dass die Ergebnisse je nach Einstellung variieren können. Für globale Anwendungen muss dieser Faktor bei der Planung sorgfältig berücksichtigt werden.


