I MariaDB, TO_SECONDS() är en inbyggd datum- och tidsfunktion som returnerar antalet sekunder från år 0 till det givna datumet eller datetime-uttrycket.
Syntax
Syntaxen ser ut så här:
TO_SECONDS(expr)
Där expr är ett datum eller datetime-värde.
Exempel
Här är ett exempel:
SELECT TO_SECONDS('2020-10-30'); Resultat:
+--------------------------+
| TO_SECONDS('2020-10-30') |
+--------------------------+
| 63771235200 |
+--------------------------+ Här är den med ett par andra tidsvärden:
SELECT
TO_SECONDS('0000-01-01'),
TO_SECONDS('1234-10-30'); Resultat:
+--------------------------+--------------------------+
| TO_SECONDS('0000-01-01') | TO_SECONDS('1234-10-30') |
+--------------------------+--------------------------+
| 86400 | 38967436800 |
+--------------------------+--------------------------+ Datetime-värden
Här är ett exempel som använder ett datetime-värde:
SELECT TO_SECONDS('2020-10-30 10:23:47'); Resultat:
+-----------------------------------+
| TO_SECONDS('2020-10-30 10:23:47') |
+-----------------------------------+
| 63771272627 |
+-----------------------------------+ Mikrosekunder
TO_SECONDS() ignorerar mikrosekunder:
SELECT TO_SECONDS('2020-10-30 10:23:47.999999'); Resultat:
+------------------------------------------+
| TO_SECONDS('2020-10-30 10:23:47.999999') |
+------------------------------------------+
| 63771272627 |
+------------------------------------------+ Numeriska datum
Numeriska datum stöds:
SELECT TO_SECONDS(20201030); Resultat:
+----------------------+ | TO_SECONDS(20201030) | +----------------------+ | 63771235200 | +----------------------+
Aktuellt datum/tid
Här är ett exempel som använder NOW() för att returnera antalet sekunder baserat på aktuellt datum och tid:
SELECT
NOW(),
TO_SECONDS(NOW()); Resultat:
+---------------------+-------------------+ | NOW() | TO_SECONDS(NOW()) | +---------------------+-------------------+ | 2021-05-31 09:34:16 | 63789672856 | +---------------------+-------------------+
Men om vi använder CURDATE() , får vi ett annat resultat (eftersom CURDATE() returnerar ett datumvärde, medan NOW() returnerar ett datetime-värde).
SELECT
NOW(),
TO_SECONDS(NOW()),
CURDATE(),
TO_SECONDS(CURDATE()); Resultat (med vertikal utdata):
NOW(): 2021-05-31 09:35:01
TO_SECONDS(NOW()): 63789672901
CURDATE(): 2021-05-31
TO_SECONDS(CURDATE()): 63789638400 Ogiltigt argument
När alla ogiltiga argument har skickats, TO_SECONDS() returnerar null med en varning:
SELECT TO_SECONDS('Homer'); Resultat:
+---------------------+
| TO_SECONDS('Homer') |
+---------------------+
| NULL |
+---------------------+
1 row in set, 1 warning (0.000 sec) Kontrollera varningen:
SHOW WARNINGS; Resultat:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Argument saknas
Anropar TO_SECONDS() med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:
SELECT TO_SECONDS(); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'
Och ett annat exempel:
SELECT TO_SECONDS('2020-10-08', '10:09:10'); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'