sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer TO_SECONDS() i MariaDB

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'

  1. Oracle efter sletning af trigger... Hvordan undgår man mutationstabel (ORA-04091)?

  2. tempdb-forbedringer i SQL Server 2019

  3. Django + Postgres + Large Time Series

  4. Brug af tuples i SQL IN-klausul