MySQL UNIX_TIMESTAMP() Function
Die Funktion `UNIX_TIMESTAMP()` in MySQL gibt den aktuellen Unix-Zeitstempel zurück, d.h. die Anzahl der Sekunden, die seit dem '1970-01-01 00:00:00' UTC verstrichen sind. Er kann auch einen angegebenen Datumsausdruck in einen Unix-Zeitstempel umwandeln.
Verwendung
Die Funktion `UNIX_TIMESTAMP()` wird verwendet, um den aktuellen Zeitstempel abzurufen oder einen Datums- und Zeitwert in ein Unix-Zeitstempelformat zu konvertieren. Dies ist besonders nützlich für Datumsvergleiche und die Speicherung.
sql
UNIX_TIMESTAMP([date]);
In dieser Syntax ist "date" ein optionales Argument, das für das Datum steht, das du umrechnen möchtest. Es sollte ein gültiger Datumsausdruck sein. Ungültige Datumsformate können je nach SQL-Modus zu einem `NULL`-Rückgabewert oder einem Fehler führen. Wenn sie weggelassen wird, gibt die Funktion den aktuellen Zeitstempel zurück.
Beispiele
1. Aktueller Unix-Zeitstempel
sql
SELECT UNIX_TIMESTAMP();
Dieses Beispiel gibt den aktuellen Unix-Zeitstempel zum Zeitpunkt der Ausführung zurück.
2. Bestimmtes Datum in Unix-Zeitstempel umwandeln
sql
SELECT UNIX_TIMESTAMP('2023-10-10 10:00:00');
Diese Abfrage wandelt das angegebene Datum und die Uhrzeit in einen Unix-Zeitstempel um und liefert eine numerische Darstellung. Beachte, dass die Funktion einen ganzzahligen Wert zurückgibt, der die Sekunden repräsentiert, keine Bruchteile von Sekunden.
3. UNIX_TIMESTAMP() in einer WHERE-Klausel verwenden
sql
SELECT *
FROM events
WHERE event_time < FROM_UNIXTIME(UNIX_TIMESTAMP() - 86400);
In diesem Beispiel wird die Funktion verwendet, um alle Ereignisse zu finden, die mehr als 24 Stunden zurückliegen, indem die Ereigniszeit mit dem aktuellen Zeitstempel minus 86.400 Sekunden (ein Tag) verglichen wird. Sie geht davon aus, dass `event_time` in einem mit `FROM_UNIXTIME()` kompatiblen Format gespeichert ist, z. B. als Unix-Zeitstempel oder in einem konvertierbaren Datum-Zeit-Format.
Tipps und bewährte Praktiken
- Lass das Argument für die aktuelle Zeit weg. Wenn du den aktuellen Zeitstempel benötigst, verwende der Einfachheit halber `UNIX_TIMESTAMP()` ohne Argumente.
- Speichere Zeitstempel für die Übertragbarkeit. Verwende Unix-Zeitstempel für eine konsistente Speicherung von Datums- und Zeitangaben über verschiedene Systeme und Zeitzonen hinweg.
- Kombiniere mit FROM_UNIXTIME(). Verwende `FROM_UNIXTIME()`, um Zeitstempel bei Bedarf wieder in ein lesbares Datumsformat zu konvertieren.
- Achte auf die Zeitzonen. Denke daran, dass Unix-Zeitstempel in UTC angegeben werden. Sofern nicht anders angegeben, wird davon ausgegangen, dass jedes angegebene Datumsargument in der Zeitzone der aktuellen Sitzung liegt. Passe die lokalen Zeitzonen nach Bedarf an.
- Fehlerbehandlung für ungültige Daten. Sei dir bewusst, dass ungültige Datumsausdrücke `NULL` oder einen Fehler zurückgeben können, und behandle diese Fälle entsprechend.
- Menschliche Lesbarkeit. Unix-Zeitstempel sind zwar effizient für die Speicherung, aber sie sind weniger gut lesbar. Ziehe in Erwägung, die ursprüngliche Datumszeit zu protokollieren oder zu speichern, falls dies für die Fehlersuche erforderlich ist.