In MariaDB, TO_SECONDS()
is een ingebouwde datum- en tijdfunctie die het aantal seconden van jaar 0 naar de opgegeven datum- of datetime-expressie retourneert.
Syntaxis
De syntaxis gaat als volgt:
TO_SECONDS(expr)
Waar expr
is een datum- of datetime-waarde.
Voorbeeld
Hier is een voorbeeld:
SELECT TO_SECONDS('2020-10-30');
Resultaat:
+--------------------------+ | TO_SECONDS('2020-10-30') | +--------------------------+ | 63771235200 | +--------------------------+
Hier is het met een paar andere tijdwaarden:
SELECT
TO_SECONDS('0000-01-01'),
TO_SECONDS('1234-10-30');
Resultaat:
+--------------------------+--------------------------+ | TO_SECONDS('0000-01-01') | TO_SECONDS('1234-10-30') | +--------------------------+--------------------------+ | 86400 | 38967436800 | +--------------------------+--------------------------+
Datum/tijd-waarden
Hier is een voorbeeld dat een datetime-waarde gebruikt:
SELECT TO_SECONDS('2020-10-30 10:23:47');
Resultaat:
+-----------------------------------+ | TO_SECONDS('2020-10-30 10:23:47') | +-----------------------------------+ | 63771272627 | +-----------------------------------+
Microseconden
TO_SECONDS()
negeert microseconden:
SELECT TO_SECONDS('2020-10-30 10:23:47.999999');
Resultaat:
+------------------------------------------+ | TO_SECONDS('2020-10-30 10:23:47.999999') | +------------------------------------------+ | 63771272627 | +------------------------------------------+
Numerieke datums
Numerieke datums worden ondersteund:
SELECT TO_SECONDS(20201030);
Resultaat:
+----------------------+ | TO_SECONDS(20201030) | +----------------------+ | 63771235200 | +----------------------+
Huidige datum/tijd
Hier is een voorbeeld dat gebruikmaakt van NOW()
om het aantal seconden terug te geven op basis van de huidige datum en tijd:
SELECT
NOW(),
TO_SECONDS(NOW());
Resultaat:
+---------------------+-------------------+ | NOW() | TO_SECONDS(NOW()) | +---------------------+-------------------+ | 2021-05-31 09:34:16 | 63789672856 | +---------------------+-------------------+
Als we echter CURDATE()
. gebruiken , krijgen we een ander resultaat (omdat CURDATE()
geeft een datumwaarde terug, terwijl NOW()
geeft een datetime-waarde terug).
SELECT
NOW(),
TO_SECONDS(NOW()),
CURDATE(),
TO_SECONDS(CURDATE());
Resultaat (met verticale uitvoer):
NOW(): 2021-05-31 09:35:01 TO_SECONDS(NOW()): 63789672901 CURDATE(): 2021-05-31 TO_SECONDS(CURDATE()): 63789638400
Ongeldig argument
Bij het doorgeven van ongeldige argumenten, TO_SECONDS()
retourneert null
met een waarschuwing:
SELECT TO_SECONDS('Homer');
Resultaat:
+---------------------+ | TO_SECONDS('Homer') | +---------------------+ | NULL | +---------------------+ 1 row in set, 1 warning (0.000 sec)
Controleer de waarschuwing:
SHOW WARNINGS;
Resultaat:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Ontbrekend argument
Aanroepen van TO_SECONDS()
met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:
SELECT TO_SECONDS();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'
En nog een voorbeeld:
SELECT TO_SECONDS('2020-10-08', '10:09:10');
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'