MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como TO_SECONDS() funciona no MariaDB


No MariaDB, TO_SECONDS() é uma função de data e hora integrada que retorna o número de segundos do ano 0 até a data ou expressão de data e hora especificada.

Sintaxe


A sintaxe fica assim:
TO_SECONDS(expr)

Onde expr é um valor de data ou data/hora.

Exemplo


Aqui está um exemplo:
SELECT TO_SECONDS('2020-10-30');

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

Aqui está com alguns outros valores de tempo:
SELECT 
    TO_SECONDS('0000-01-01'),
    TO_SECONDS('1234-10-30');

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

Valores de data e hora


Aqui está um exemplo que usa um valor de data e hora:
SELECT TO_SECONDS('2020-10-30 10:23:47');

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

Microsegundos


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

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

Datas numéricas


Datas numéricas são suportadas:
SELECT TO_SECONDS(20201030);

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

Data/hora atual


Aqui está um exemplo que usa NOW() para retornar o número de segundos com base na data e hora atuais:
SELECT 
    NOW(),
    TO_SECONDS(NOW());

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

No entanto, se usarmos CURDATE() , obteremos um resultado diferente (porque CURDATE() retorna um valor de data, enquanto NOW() retorna um valor de data e hora).
SELECT 
    NOW(),
    TO_SECONDS(NOW()),
    CURDATE(),
    TO_SECONDS(CURDATE());

Resultado (usando saída vertical):
                NOW(): 2021-05-31 09:35:01
    TO_SECONDS(NOW()): 63789672901
            CURDATE(): 2021-05-31
TO_SECONDS(CURDATE()): 63789638400

Argumento inválido


Ao passar qualquer argumento inválido, TO_SECONDS() retorna null com um aviso:
SELECT TO_SECONDS('Homer');

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

Confira o aviso:
SHOW WARNINGS;

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

Argumento ausente


Chamando TO_SECONDS() com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT TO_SECONDS();

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

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

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