sql >> Database >  >> RDS >> MariaDB

Hoe TO_SECONDS() werkt in MariaDB

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'

  1. Python en MySQL gebruiken in het ETL-proces:Python en SQLAlchemy gebruiken

  2. LOCALTIMESTAMP() Functie in Oracle

  3. LIKE-query op elementen van platte jsonb-array

  4. MSSQL-fout 'De onderliggende provider is mislukt bij Open'