V MariaDB, UNIX_TIMESTAMP()
je vestavěná funkce data a času, která vrací unixové časové razítko na základě jeho argumentu (nebo chybějícího argumentu).
Funguje to takto:
- Při volání bez argument, vrátí unixové časové razítko (sekundy od ‚1970-01-01 00:00:00‘ UTC) jako celé číslo bez znaménka.
- Při volání s argument, vrátí hodnotu argumentu jako sekundy od „1970-01-01 00:00:00“ UTC.
Inverzní funkce UNIX_TIMESTAMP()
je FROM_UNIXTIME()
.
Syntaxe
UNIX_TIMESTAMP()
lze volat následujícími dvěma způsoby:
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
Kde date
je řetězec data, řetězec data a času, časové razítko nebo číslo ve formátu YYMMDD
nebo YYYYMMDD
.
Příklad – Bez argumentu
Zde je příklad volání UNIX_TIMESTAMP()
bez argumentu:
SELECT UNIX_TIMESTAMP();
Výsledek:
+------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1622502492 | +------------------+
To nám říká, že když jsem spustil tento příkaz, od 1970-01-01 00:00:00 uplynulo 1622502492 sekund.
Příklad – s argumentem
Zde je příklad s argumentem:
SELECT UNIX_TIMESTAMP('1970-01-02');
Výsledek:
+------------------------------+ | UNIX_TIMESTAMP('1970-01-02') | +------------------------------+ | 50400 | +------------------------------+
V následujícím příkladu volám UNIX_TIMESTAMP()
dvakrát; jednou bez argumentu a jednou s NOW()
jako argument.
SELECT
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP(NOW());
Výsledek:
+------------------+-----------------------+ | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | +------------------+-----------------------+ | 1622502678 | 1622502678 | +------------------+-----------------------+
Řetězec data a času
Ve výše uvedeném příkladu NOW()
vrátí hodnotu datetime.
V tomto příkladu výslovně uvádím řetězec datetime:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47');
Výsledek:
+---------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47') | +---------------------------------------+ | 1604017427 | +---------------------------------------+
Mikrosekundy
UNIX_TIMESTAMP()
podporuje mikrosekundy:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456');
Výsledek:
+----------------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') | +----------------------------------------------+ | 1604017427.123456 | +----------------------------------------------+
Číselná data
Číselná data jsou podporována:
SELECT UNIX_TIMESTAMP(20201030);
Výsledek:
+--------------------------+ | UNIX_TIMESTAMP(20201030) | +--------------------------+ | 1603980000 | +--------------------------+
Neplatný argument
Po předání neplatných argumentů UNIX_TIMESTAMP()
vrátí null
s varováním:
SELECT UNIX_TIMESTAMP('Homer');
Výsledek:
+-------------------------+ | UNIX_TIMESTAMP('Homer') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 1 warning (0.001 sec)
Zkontrolujte varování:
SHOW WARNINGS;
Výsledek:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Příliš mnoho argumentů
Volání UNIX_TIMESTAMP()
s příliš mnoha argumenty vede k chybě:
SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03');
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNIX_TIMESTAMP'