Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter o tempo de uma string no MySQL

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.