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