sql >> Databáze >  >> RDS >> MariaDB

Jak TO_SECONDS() funguje v MariaDB

V MariaDB, TO_SECONDS() je vestavěná funkce data a času, která vrací počet sekund od roku 0 do daného výrazu data nebo data a času.

Syntaxe

Syntaxe vypadá takto:

TO_SECONDS(expr)

Kde expr je hodnota data nebo data a času.

Příklad

Zde je příklad:

SELECT TO_SECONDS('2020-10-30');

Výsledek:

+--------------------------+
| TO_SECONDS('2020-10-30') |
+--------------------------+
|              63771235200 |
+--------------------------+

Zde je to s několika dalšími časovými hodnotami:

SELECT 
    TO_SECONDS('0000-01-01'),
    TO_SECONDS('1234-10-30');

Výsledek:

+--------------------------+--------------------------+
| TO_SECONDS('0000-01-01') | TO_SECONDS('1234-10-30') |
+--------------------------+--------------------------+
|                    86400 |              38967436800 |
+--------------------------+--------------------------+

Hodnoty data a času

Zde je příklad, který používá hodnotu datetime:

SELECT TO_SECONDS('2020-10-30 10:23:47');

Výsledek:

+-----------------------------------+
| TO_SECONDS('2020-10-30 10:23:47') |
+-----------------------------------+
|                       63771272627 |
+-----------------------------------+

Mikrosekundy

TO_SECONDS() ignoruje mikrosekundy:

SELECT TO_SECONDS('2020-10-30 10:23:47.999999');

Výsledek:

+------------------------------------------+
| TO_SECONDS('2020-10-30 10:23:47.999999') |
+------------------------------------------+
|                              63771272627 |
+------------------------------------------+

Číselná data

Číselná data jsou podporována:

SELECT TO_SECONDS(20201030);

Výsledek:

+----------------------+
| TO_SECONDS(20201030) |
+----------------------+
|          63771235200 |
+----------------------+

Aktuální datum/čas

Zde je příklad, který používá NOW() vrátíte počet sekund podle aktuálního data a času:

SELECT 
    NOW(),
    TO_SECONDS(NOW());

Výsledek:

+---------------------+-------------------+
| NOW()               | TO_SECONDS(NOW()) |
+---------------------+-------------------+
| 2021-05-31 09:34:16 |       63789672856 |
+---------------------+-------------------+

Pokud však použijeme CURDATE() , dostaneme jiný výsledek (protože CURDATE() vrátí hodnotu data, zatímco NOW() vrátí hodnotu datetime).

SELECT 
    NOW(),
    TO_SECONDS(NOW()),
    CURDATE(),
    TO_SECONDS(CURDATE());

Výsledek (při použití vertikálního výstupu):

                NOW(): 2021-05-31 09:35:01
    TO_SECONDS(NOW()): 63789672901
            CURDATE(): 2021-05-31
TO_SECONDS(CURDATE()): 63789638400

Neplatný argument

Po předání neplatných argumentů TO_SECONDS() vrátí null s varováním:

SELECT TO_SECONDS('Homer');

Výsledek:

+---------------------+
| TO_SECONDS('Homer') |
+---------------------+
|                NULL |
+---------------------+
1 row in set, 1 warning (0.000 sec)

Zkontrolujte varování:

SHOW WARNINGS;

Výsledek:

+---------+------+-------------------------------+
| Level   | Code | Message                       |
+---------+------+-------------------------------+
| Warning | 1292 | Incorrect time value: 'Homer' |
+---------+------+-------------------------------+

Chybí argument

Volání TO_SECONDS() s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:

SELECT TO_SECONDS();

Výsledek:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'

A další příklad:

SELECT TO_SECONDS('2020-10-08', '10:09:10');

Výsledek:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'

  1. Export dat v SQL Server jako INSERT INTO

  2. Nejlepší způsob, jak zkrátit řetězec UTF8 na základě délky bajtu

  3. SQL k nalezení prvního nečíselného znaku v řetězci

  4. Vytváření nových tabulek v IRI Workbench