V MariaDB, TO_SECONDS() je vestavěná funkce data a času, která vrací počet sekund od roku 0 do daného výrazu data nebo data a času.
Syntaxe
Syntaxe vypadá takto:
TO_SECONDS(expr)
Kde expr je hodnota data nebo data a času.
Příklad
Zde je příklad:
SELECT TO_SECONDS('2020-10-30'); Výsledek:
+--------------------------+
| TO_SECONDS('2020-10-30') |
+--------------------------+
| 63771235200 |
+--------------------------+ Zde je to s několika dalšími časovými hodnotami:
SELECT
TO_SECONDS('0000-01-01'),
TO_SECONDS('1234-10-30'); Výsledek:
+--------------------------+--------------------------+
| TO_SECONDS('0000-01-01') | TO_SECONDS('1234-10-30') |
+--------------------------+--------------------------+
| 86400 | 38967436800 |
+--------------------------+--------------------------+ Hodnoty data a času
Zde je příklad, který používá hodnotu datetime:
SELECT TO_SECONDS('2020-10-30 10:23:47'); Výsledek:
+-----------------------------------+
| TO_SECONDS('2020-10-30 10:23:47') |
+-----------------------------------+
| 63771272627 |
+-----------------------------------+ Mikrosekundy
TO_SECONDS() ignoruje mikrosekundy:
SELECT TO_SECONDS('2020-10-30 10:23:47.999999'); Výsledek:
+------------------------------------------+
| TO_SECONDS('2020-10-30 10:23:47.999999') |
+------------------------------------------+
| 63771272627 |
+------------------------------------------+ Číselná data
Číselná data jsou podporována:
SELECT TO_SECONDS(20201030); Výsledek:
+----------------------+ | TO_SECONDS(20201030) | +----------------------+ | 63771235200 | +----------------------+
Aktuální datum/čas
Zde je příklad, který používá NOW() vrátíte počet sekund podle aktuálního data a času:
SELECT
NOW(),
TO_SECONDS(NOW()); Výsledek:
+---------------------+-------------------+ | NOW() | TO_SECONDS(NOW()) | +---------------------+-------------------+ | 2021-05-31 09:34:16 | 63789672856 | +---------------------+-------------------+
Pokud však použijeme CURDATE() , dostaneme jiný výsledek (protože CURDATE() vrátí hodnotu data, zatímco NOW() vrátí hodnotu datetime).
SELECT
NOW(),
TO_SECONDS(NOW()),
CURDATE(),
TO_SECONDS(CURDATE()); Výsledek (při použití vertikálního výstupu):
NOW(): 2021-05-31 09:35:01
TO_SECONDS(NOW()): 63789672901
CURDATE(): 2021-05-31
TO_SECONDS(CURDATE()): 63789638400 Neplatný argument
Po předání neplatných argumentů TO_SECONDS() vrátí null s varováním:
SELECT TO_SECONDS('Homer'); Výsledek:
+---------------------+
| TO_SECONDS('Homer') |
+---------------------+
| NULL |
+---------------------+
1 row in set, 1 warning (0.000 sec) Zkontrolujte varování:
SHOW WARNINGS; Výsledek:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Chybí argument
Volání TO_SECONDS() s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:
SELECT TO_SECONDS(); Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'
A další příklad:
SELECT TO_SECONDS('2020-10-08', '10:09:10'); Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'