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'