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 | +------+