MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie UNIX_TIMESTAMP() in MariaDB funktioniert

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:

+---------------------------------------------- +| UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') |+-------------------------------- -------------+| 1604017427.123456 |+----------------------------------------------+

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'