In MariaDB UNIX_TIMESTAMP()
ist eine eingebaute Datums- und Zeitfunktion, die einen Unix-Zeitstempel basierend auf ihrem Argument (oder dem Fehlen eines Arguments) zurückgibt.
So funktioniert es:
- Bei Aufruf ohne ein Argument, gibt es einen Unix-Zeitstempel (Sekunden seit „1970-01-01 00:00:00“ UTC) als Ganzzahl ohne Vorzeichen zurück.
- Bei Anruf mit ein Argument, gibt es den Wert des Arguments als Sekunden seit „1970-01-01 00:00:00“ UTC zurück.
Die Umkehrfunktion von UNIX_TIMESTAMP()
ist FROM_UNIXTIME()
.
Syntax
UNIX_TIMESTAMP()
kann auf zwei Arten aufgerufen werden:
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
Wobei date
ist ein Datumsstring, ein Datetime-String, ein Zeitstempel oder eine Zahl im Format YYMMDD
oder YYYYMMDD
.
Beispiel – Ohne Argument
Hier ist ein Beispiel für den Aufruf von UNIX_TIMESTAMP()
ohne Argument:
SELECT UNIX_TIMESTAMP();
Ergebnis:
+------------------+| UNIX_TIMESTAMP() |+------------------+| 1622502492 |+------------------+
Dies sagt uns, dass, als ich diese Anweisung ausführte, 1622502492 Sekunden seit 1970-01-01 00:00:00 vergangen waren.
Beispiel – Mit einem Argument
Hier ist ein Beispiel mit einem Argument:
SELECT UNIX_TIMESTAMP('1970-01-02');
Ergebnis:
+------------------------------+| UNIX_TIMESTAMP('1970-01-02') |+------------------------------+| 50400 |+------------------------------+
Im folgenden Beispiel rufe ich UNIX_TIMESTAMP()
auf zweimal; einmal ohne Argument und einmal mit NOW()
als Argument.
SELECT
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP(NOW());
Ergebnis:
+-------------+----------------------+| UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) |+-------------+----------------------- +| 1622502678 | 1622502678 |+--------------------------+-------------------------------+
Datetime-String
Im obigen Beispiel NOW()
gibt einen datetime-Wert zurück.
In diesem Beispiel gebe ich explizit eine datetime-Zeichenfolge an:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47');
Ergebnis:
+--------------------------+| UNIX_TIMESTAMP('2020-10-30 10:23:47') |+---------------------------------------------- ------+| 1604017427 |+--------------------------------------+
Mikrosekunden
UNIX_TIMESTAMP()
unterstützt Mikrosekunden:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456');
Ergebnis:
Numerische Daten
Numerische Datumsangaben werden unterstützt:
SELECT UNIX_TIMESTAMP(20201030);
Ergebnis:
+---------------------+| UNIX_TIMESTAMP(20201030) |+---------------------+| 1603980000 |+---------------------+
Ungültiges Argument
Wenn ungültige Argumente übergeben werden, UNIX_TIMESTAMP()
gibt null
zurück mit einer Warnung:
SELECT UNIX_TIMESTAMP('Homer');
Ergebnis:
+-------------------------+| UNIX_TIMESTAMP('Homer') |+-------------------------+| NULL |+-------------------------+1 Zeile im Satz, 1 Warnung (0,001 Sek.)
Überprüfen Sie die Warnung:
SHOW WARNINGS;
Ergebnis:
+---------+------+------------------------------------- --+| Ebene | Code | Nachricht |+---------+------+------------------------------ -+| Warnung | 1292 | Falscher Zeitwert:'Homer' |+---------+------+----------------------- -------+
Zu viele Argumente
Aufruf von UNIX_TIMESTAMP()
mit zu vielen Argumenten führt zu einem Fehler:
SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03');
Ergebnis:
FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'UNIX_TIMESTAMP'