Problema:
Você deseja extrair a hora de um valor de string no MySQL.
Exemplo:
Você tem um valor de string que se parece com isso:
‘Wednesday, 10 February 2021, 12:30:20’
Você deseja extrair apenas a parte do tempo, '12:30:20'.
Solução:
Segue a consulta:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
Discussão:
Para ilustrar o processo mais claramente, vamos explicar isso em duas partes.
Primeiro, temos que converter a string em um valor de data. Para fazer isso, usamos o
STR_TO_DATE
função. A consulta deve ficar assim:SELECT STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T”);
A finalidade do
STR_TO_DATE
função é converter uma string de texto para um formato de data e hora. A sintaxe para esta função é a seguinte:STR_TO_DATE(string, format);
O primeiro argumento desta função é a string que queremos converter. O segundo argumento especifica o formato da string. No nosso caso, usamos os seguintes parâmetros:
- %W:nome do dia da semana de domingo a sábado.
- %d:dia do mês como valor numérico de 01 a 31.
- %m:mês como um valor numérico de 01 a 12.
- %Y:ano como um valor numérico de 4 dígitos (aaaa).
- %T:hora no formato de 24 horas (hh:mm:ss).
Você pode encontrar mais parâmetros na documentação oficial do MySQL.
O resultado dessa consulta deve ficar assim:
2021-02-10 12:30:20
Agora temos o valor no tipo de dados DATETIME. Para extrair apenas a hora, temos que adicionar o
DATE_FORMAT
função para a consulta acima. A sintaxe geral do
DATE_FORMAT
função é:DATE_FORMAT(date, format)
Então nossa consulta deve ficar assim:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
Em nosso exemplo, o primeiro argumento do
DATE_FORMAT
função é a data resultante do STR_TO_DATE
função. O segundo argumento é o formato, que funciona da mesma forma que no STR_TO_DATE
função. Como só precisamos do tempo aqui, especificamos "%T
" como segundo argumento. O caractere % é obrigatório antes dos caracteres especificadores de formato. Devemos especificar o formato exatamente na mesma ordem, incluindo todos os sinais de pontuação.
O resultado da consulta que vemos abaixo é o resultado esperado.
12:30:20
Usando uma combinação dessas duas funções, você pode extrair todas as combinações possíveis de data e hora de uma string de texto.