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

4 funções para obter a hora de um valor de tempo no MariaDB


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