I MariaDB, TO_SECONDS()
er en indbygget dato- og tidsfunktion, der returnerer antallet af sekunder fra år 0 til det givne dato- eller dato-tidsudtryk.
Syntaks
Syntaksen ser sådan ud:
TO_SECONDS(expr)
Hvor expr
er en dato- eller datetime-værdi.
Eksempel
Her er et eksempel:
SELECT TO_SECONDS('2020-10-30');
Resultat:
+--------------------------+ | TO_SECONDS('2020-10-30') | +--------------------------+ | 63771235200 | +--------------------------+
Her er den med et par andre tidsværdier:
SELECT
TO_SECONDS('0000-01-01'),
TO_SECONDS('1234-10-30');
Resultat:
+--------------------------+--------------------------+ | TO_SECONDS('0000-01-01') | TO_SECONDS('1234-10-30') | +--------------------------+--------------------------+ | 86400 | 38967436800 | +--------------------------+--------------------------+
Dato-tidsværdier
Her er et eksempel, der bruger en datetime-værdi:
SELECT TO_SECONDS('2020-10-30 10:23:47');
Resultat:
+-----------------------------------+ | TO_SECONDS('2020-10-30 10:23:47') | +-----------------------------------+ | 63771272627 | +-----------------------------------+
Mikrosekunder
TO_SECONDS()
ignorerer mikrosekunder:
SELECT TO_SECONDS('2020-10-30 10:23:47.999999');
Resultat:
+------------------------------------------+ | TO_SECONDS('2020-10-30 10:23:47.999999') | +------------------------------------------+ | 63771272627 | +------------------------------------------+
Numeriske datoer
Numeriske datoer understøttes:
SELECT TO_SECONDS(20201030);
Resultat:
+----------------------+ | TO_SECONDS(20201030) | +----------------------+ | 63771235200 | +----------------------+
Aktuel dato/klokkeslæt
Her er et eksempel, der bruger NOW()
for at returnere antallet af sekunder baseret på den aktuelle dato og klokkeslæt:
SELECT
NOW(),
TO_SECONDS(NOW());
Resultat:
+---------------------+-------------------+ | NOW() | TO_SECONDS(NOW()) | +---------------------+-------------------+ | 2021-05-31 09:34:16 | 63789672856 | +---------------------+-------------------+
Men hvis vi bruger CURDATE()
, får vi et andet resultat (fordi CURDATE()
returnerer en datoværdi, hvorimod NOW()
returnerer en datetime-værdi).
SELECT
NOW(),
TO_SECONDS(NOW()),
CURDATE(),
TO_SECONDS(CURDATE());
Resultat (ved hjælp af lodret output):
NOW(): 2021-05-31 09:35:01 TO_SECONDS(NOW()): 63789672901 CURDATE(): 2021-05-31 TO_SECONDS(CURDATE()): 63789638400
Ugyldigt argument
Når alle ugyldige argumenter sendes, TO_SECONDS()
returnerer null
med en advarsel:
SELECT TO_SECONDS('Homer');
Resultat:
+---------------------+ | TO_SECONDS('Homer') | +---------------------+ | NULL | +---------------------+ 1 row in set, 1 warning (0.000 sec)
Tjek advarslen:
SHOW WARNINGS;
Resultat:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Manglende argument
Kalder TO_SECONDS()
med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
SELECT TO_SECONDS();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'
Og endnu et eksempel:
SELECT TO_SECONDS('2020-10-08', '10:09:10');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'