In MariaDB, UNIX_TIMESTAMP() is een ingebouwde datum- en tijdfunctie die een Unix-tijdstempel retourneert, gebaseerd op zijn argument (of gebrek aan argument).
Het werkt als volgt:
- Wanneer gebeld zonder een argument, retourneert het een Unix-tijdstempel (seconden sinds '1970-01-01 00:00:00' UTC) als een geheel getal zonder teken.
- Wanneer gebeld met een argument, retourneert het de waarde van het argument als seconden sinds '1970-01-01 00:00:00' UTC.
De inverse functie van UNIX_TIMESTAMP() is FROM_UNIXTIME() .
Syntaxis
UNIX_TIMESTAMP() kan op de volgende twee manieren worden aangeroepen:
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
Waar date is een datumstring, een datetime string, een tijdstempel of een getal in de notatie YYMMDD of YYYYMMDD .
Voorbeeld – Zonder argument
Hier is een voorbeeld van het aanroepen van UNIX_TIMESTAMP() zonder argument:
SELECT UNIX_TIMESTAMP(); Resultaat:
+------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1622502492 | +------------------+
Dit vertelt ons dat toen ik die verklaring uitvoerde, er 1622502492 seconden waren verstreken sinds 01-01-70 00:00:00.
Voorbeeld – Met een argument
Hier is een voorbeeld met een argument:
SELECT UNIX_TIMESTAMP('1970-01-02'); Resultaat:
+------------------------------+
| UNIX_TIMESTAMP('1970-01-02') |
+------------------------------+
| 50400 |
+------------------------------+
In het volgende voorbeeld roep ik UNIX_TIMESTAMP() . aan tweemaal; één keer zonder argument, en één keer met NOW() als het argument.
SELECT
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP(NOW()); Resultaat:
+------------------+-----------------------+ | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | +------------------+-----------------------+ | 1622502678 | 1622502678 | +------------------+-----------------------+
Datum-tekenreeks
In het bovenstaande voorbeeld, NOW() geeft een datetime-waarde terug.
In dit voorbeeld geef ik expliciet een datetime string op:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47'); Resultaat:
+---------------------------------------+
| UNIX_TIMESTAMP('2020-10-30 10:23:47') |
+---------------------------------------+
| 1604017427 |
+---------------------------------------+ Microseconden
UNIX_TIMESTAMP() ondersteunt microseconden:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456'); Resultaat:
+----------------------------------------------+
| UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') |
+----------------------------------------------+
| 1604017427.123456 |
+----------------------------------------------+ Numerieke datums
Numerieke datums worden ondersteund:
SELECT UNIX_TIMESTAMP(20201030); Resultaat:
+--------------------------+ | UNIX_TIMESTAMP(20201030) | +--------------------------+ | 1603980000 | +--------------------------+
Ongeldig argument
Bij het doorgeven van ongeldige argumenten, UNIX_TIMESTAMP() retourneert null met een waarschuwing:
SELECT UNIX_TIMESTAMP('Homer'); Resultaat:
+-------------------------+
| UNIX_TIMESTAMP('Homer') |
+-------------------------+
| NULL |
+-------------------------+
1 row in set, 1 warning (0.001 sec) Controleer de waarschuwing:
SHOW WARNINGS; Resultaat:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Te veel argumenten
Aanroepen van UNIX_TIMESTAMP() met te veel argumenten resulteert in een fout:
SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03'); Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNIX_TIMESTAMP'