Abaixo estão 4 funções que permitem retornar a hora de um valor de hora no MariaDB.
A HOUR() Função
A
HOUR() função retorna a hora para um determinado TIME ou DATETIME expressão. Ele aceita um argumento, que é o horário do qual você deseja extrair a hora. Exemplo:
SELECT HOUR('03:45:30'); Resultado:
+------------------+| HORA('03:45:30') |+------------------+| 3 |+------------------+ Para valores de hora do dia, ele retorna a hora como um número no intervalo
0 para 23 . No entanto, o intervalo de TIME valores podem ser muito maiores e, portanto, o valor retornado pode ser muito maior que 23 . Especificamente, TIME os valores podem estar no intervalo '-838:59:59.999999' para '838:59:59.999999' . Aqui está um exemplo com uma parte de uma hora maior:
SELECT HOUR('838:45:30'); Resultado:
+-------------------+| HORA('838:45:30') |+-------------------+| 838 |+-------------------+ Se a hora estiver fora do intervalo aceito para
TIME valores, o valor de retorno é 838 com um aviso. TIME os valores também podem ser negativos. Nesses casos, HOUR() retorna um valor positivo. 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 a hora (assim como outras unidades) do valor de tempo. Exemplo:
SELECT EXTRACT(HOUR FROM '10:47:01'); Resultado:
+-------------------------------+| EXTRACT(HORA DE '10:47:01') |+------------------------------------------+| 10 |+------------------------------------------+
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. Você pode, portanto, usar esta função para retornar a hora (assim como minutos e segundos) da hora. Existem várias opções para retornar a hora.
Aqui está um exemplo que retorna a hora em várias formas:
SELECT
TIME_FORMAT('18:45:30', '%H') AS '%H',
TIME_FORMAT('18:45:30', '%h') AS '%h',
TIME_FORMAT('18:45:30', '%I') AS '%I',
TIME_FORMAT('18:45:30', '%k') AS '%k',
TIME_FORMAT('18:45:30', '%l') AS '%l'; Resultado:
+------+------+------+------+------+| %H | %h | %I | %k | %l |+------+------+------+------+------+| 18 | 06 | 06 | 18 | 6 |+------+------+------+------+------+
Aqui está uma descrição de cada um desses especificadores de formato:
| Especificador de formato | Descrição |
|---|---|
%H | Hora com 2 dígitos entre 00-23. |
%h | Hora com 2 dígitos entre 01-12. |
%I | Hora com 2 dígitos entre 01-12. |
%k | Hora com 1 dígito entre 0-23. |
%l | Hora com 1 dígito entre 1-12. |
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. 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 18:45:30', '%H') AS '%H',
DATE_FORMAT('2023-01-01 18:45:30', '%h') AS '%h',
DATE_FORMAT('2023-01-01 18:45:30', '%I') AS '%I',
DATE_FORMAT('2023-01-01 18:45:30', '%k') AS '%k',
DATE_FORMAT('2023-01-01 18:45:30', '%l') AS '%l'; Resultado:
+------+------+------+------+------+| %H | %h | %I | %k | %l |+------+------+------+------+------+| 18 | 06 | 06 | 18 | 6 |+------+------+------+------+------+
Passando apenas um
TIME value não é suficiente com esta função:SELECT
DATE_FORMAT('18:45:30', '%H') AS '%H',
DATE_FORMAT('18:45:30', '%h') AS '%h',
DATE_FORMAT('18:45:30', '%I') AS '%I',
DATE_FORMAT('18:45:30', '%k') AS '%k',
DATE_FORMAT('18:45:30', '%l') AS '%l'; Resultado:
+------+------+------+------+------+| %H | %h | %I | %k | %l |+------+------+------+------+------+| NULO | NULO | NULO | NULO | NULL |+------+------+------+------+------+1 linha no conjunto, 5 avisos (0,000 seg)
Mostrar os avisos:
SHOW WARNINGS;
Resultado:
+---------+------+----------------------------- ---------+| Nível | Código | Mensagem |+---------+------+------------------- --------+| Aviso | 1292 | Valor de data e hora incorreto:'18:45:30' || Aviso | 1292 | Valor de data e hora incorreto:'18:45:30' || Aviso | 1292 | Valor de data e hora incorreto:'18:45:30' || Aviso | 1292 | Valor de data e hora incorreto:'18:45:30' || Aviso | 1292 | Valor de data e hora incorreto:'18:45:30' |+---------+------+-------------------- ------------------+