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

4 funções que retornam a parte dos segundos de um valor de tempo no MariaDB


Abaixo estão 4 funções que permitem retornar a parte dos segundos de um valor de tempo no MariaDB.

O SECOND() Função


O SECOND() função retorna a parte dos segundos de um determinado TIME ou DATETIME expressão. Ele aceita um argumento, que é o tempo do qual você deseja extrair os segundos.

Exemplo:
SELECT SECOND('03:45:30');

Resultado:
+--------------------+
| SECOND('03:45:30') |
+--------------------+
|                 30 |
+--------------------+

TIME os valores podem estar no intervalo '-838:59:59.999999' para '838:59:59.999999' . Isso inclui microssegundos, mas SECOND() retorna apenas a parte dos segundos (há um MICROSECOND() função para retornar microssegundos).

TIME os valores também podem ser negativos. Nesses casos, SECOND() retorna um valor positivo.

Aqui está um valor de tempo negativo com uma parte de microssegundos:
SELECT SECOND('-838:59:59.999999');

Resultado:
+-----------------------------+
| SECOND('-838:59:59.999999') |
+-----------------------------+
|                          59 |
+-----------------------------+

A parte dos segundos é extraída conforme o esperado.

O EXTRACT() Função


O EXTRACT() A função permite extrair uma unidade especificada do valor de data/hora. Portanto, você pode usá-lo para extrair os segundos (assim como outras unidades) do valor de tempo.

Exemplo:
SELECT EXTRACT(SECOND FROM '10:47:01');

Resultado:
+---------------------------------+
| EXTRACT(SECOND FROM '10:47:01') |
+---------------------------------+
|                               1 |
+---------------------------------+

O TIME_FORMAT() Função


O TIME_FORMAT() A função permite que você formate um valor de tempo com base em uma string de formato. A string de formato especifica como a hora deve ser formatada.

Portanto, você pode usar esta função para retornar os segundos (assim como os minutos e as horas) da hora.

O %s e %S especificadores de formato retornam os segundos com dois dígitos:
SELECT 
    TIME_FORMAT('10:07:30', '%s'),
    TIME_FORMAT('10:07:30', '%S');

Resultado:
+-------------------------------+-------------------------------+
| TIME_FORMAT('10:07:30', '%s') | TIME_FORMAT('10:07:30', '%S') |
+-------------------------------+-------------------------------+
| 30                            | 30                            |
+-------------------------------+-------------------------------+

Você também pode usar o $f especificador de formato para retornar seis subsegundos de dígitos:
SELECT 
    TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds",
    TIME_FORMAT('10:07:30.123456', '%s.%f') AS "Both";

Resultado:
+--------------+-----------+
| Microseconds | Both      |
+--------------+-----------+
| 123456       | 30.123456 |
+--------------+-----------+

O TIME_FORMAT() A função aceita um subconjunto das strings de formato que podem ser usadas com o DATE_FORMAT() função. Veja Strings de Formato MariaDB para uma lista completa de strings/especificadores de formato que podem ser usados ​​com DATE_FORMAT() . O TIME_FORMAT() A função só aceita especificadores de formato para horas, minutos e segundos/sub segundos. Qualquer outro especificador de formato resulta em null ou 0 sendo devolvido.

O DATE_FORMAT() Função


O DATE_FORMAT() A função permite que você formate um valor de data ou data e hora com base em uma string de formato. A string de formato especifica como a data/hora deve ser formatada.

Podemos, portanto, usar os mesmos especificadores de formato que usamos com o TIME_FORMAT() função no exemplo anterior. No entanto, DATE_FORMAT() não aceita um TIME valor, então precisaremos passar um DATETIME valor.
SELECT DATE_FORMAT('2023-01-01 10:07:30', '%s');

Resultado:
+------------------------------------------+
| DATE_FORMAT('2023-01-01 10:07:30', '%s') |
+------------------------------------------+
| 30                                       |
+------------------------------------------+

Passando apenas um TIME value não funciona com esta função:
SELECT DATE_FORMAT('10:07:30', '%s') AS '%s';

Resultado:
+------+
| %s   |
+------+
| 00   |
+------+