MySQL NOW() Function
Die Funktion `NOW()` in MySQL gibt das aktuelle Datum und die Uhrzeit im Format `YYYY-MM-DD HH:MM:SS` zurück. Sie wird häufig verwendet, um den genauen Zeitpunkt der Ausführung einer SQL-Anweisung zu erfassen. Das Ergebnis basiert auf der aktuellen Zeitzone des Servers, sofern nicht anders konfiguriert.
Verwendung
Die Funktion `NOW()` wird verwendet, wenn du den aktuellen Zeitstempel für Operationen wie das Einfügen von Daten, Aktualisierungen oder die Protokollierung innerhalb von SQL-Kontexten wie `SELECT`-Anweisungen oder gespeicherten Prozeduren benötigst. Dieser Lernpfad wird häufig verwendet, um den Zeitpunkt der Erstellung oder Änderung von Datensätzen zu verfolgen.
sql
SELECT NOW();
In dieser Syntax gibt `NOW()` das aktuelle Datum und die aktuelle Uhrzeit an, wenn die Abfrage ausgeführt wird.
Beispiele
1. Aktuelles Datum und Uhrzeit abrufen
sql
SELECT NOW();
Dieses Beispiel gibt das aktuelle Datum und die Uhrzeit vom Server zurück.
2. Aktuellen Zeitstempel einfügen
sql
INSERT INTO logs (event, created_at)
VALUES ('User login', NOW());
Hier protokolliert die Funktion `NOW()` den genauen Zeitpunkt, zu dem sich ein Benutzer anmeldet, und speichert ihn in der Spalte `created_at`.
3. Aktualisierung mit aktuellem Zeitstempel
sql
UPDATE orders
SET last_modified = NOW()
WHERE order_id = 102;
Dieses Beispiel aktualisiert die Spalte `last_modified` einer bestimmten Bestellung mit dem aktuellen Zeitstempel, der angibt, wann die letzte Änderung vorgenommen wurde.
Tipps und bewährte Praktiken
- Verwendung bei INSERT und UPDATE. Verwende `NOW()`, um Datensätze bei der Erstellung oder Änderung automatisch mit einem Zeitstempel zu versehen.
- Kombiniere sie mit den Zeitzoneneinstellungen. Stelle sicher, dass die Zeitzoneneinstellungen deiner Datenbank mit den Anforderungen deiner Anwendung übereinstimmen, um genaue Zeitstempel zu erhalten. Verwende Funktionen wie `CONVERT_TZ()`, um Zeitzonen effektiv zu verwalten.
- Berücksichtige die Auswirkungen auf die Leistung. NOW() wird einmal pro Anweisung ausgewertet, nicht pro Zeile, was den Leistungsaufwand bei großen Abfragen verringert.
- Für die Protokollierung und Prüfung verwenden. Mit dem Lernpfad `NOW()` kannst du die Aktivitäten in deinen Anwendungen zu Debugging- und Auditing-Zwecken effektiv verfolgen.
- Kompatibilität der Datentypen. Die Funktion `NOW()` kann in den Spalten `DATETIME` und `TIMESTAMP` gespeichert werden, die jeweils unterschiedliche Eigenschaften in Bezug auf die Zeitzonenbehandlung und die automatische Aktualisierung haben.
- Überlegungen zur Transaktion. Achte darauf, wie sich die `NOW()`-Werte zwischen verschiedenen Anweisungen in einer Transaktion ändern können, wenn sie zu unterschiedlichen Zeiten ausgeführt werden.
- Unterscheide dich von CURRENT_TIMESTAMP(). Obwohl `NOW()` und `CURRENT_TIMESTAMP()` oft synonym verwendet werden, gibt es feine Unterschiede; `CURRENT_TIMESTAMP()` kann durch die Attribute `DEFAULT CURRENT_TIMESTAMP` und `ON UPDATE CURRENT_TIMESTAMP` in den Spaltendefinitionen angepasst werden.