Função MySQL STR_TO_DATE()

Resumo : neste tutorial, mostraremos como usar a função MySQL STR_TO_DATE() para converter uma string em um valor de data, hora ou datahora.

Introdução à função MySQL STR_TO_DATE

Converte STR_TO_DATE()uma string em um valor de data com base em uma string de formato especificada.

Aqui está a sintaxe da STR_TO_DATE()função:

STR_TO_DATE(str,fmt);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

  • str: esta é a string de entrada que você deseja converter.
  • fmt: esta é a string de formato que inclui especificadores de formato. Por exemplo, %dpara dia, %mpara mês e %ypara ano.

A STR_TO_DATE()função pode retornar um valor ou DATEcom base nas strings de entrada e formato.TIME,DATETIME

Se a string de entrada for ilegal, a STR_TO_DATE()função retornaráNULL.

A STR_TO_DATE()função verifica a string de entrada para corresponder à string de formato. A sequência de formato pode conter caracteres literais e especificadores de formato que começam com um caractere de porcentagem (%).

Consulte a função DATE_FORMAT para obter a lista de especificadores de formato.

A STR_TO_DATE()função é muito útil na migração de dados que envolve a conversão de dados temporais de um formato externo para o formato de dados temporais MySQL.

Exemplos de MySQL STR_TO_DATE

Vejamos alguns exemplos de uso de STR_TO_DATE()funções para converter strings em valores de data e/ou hora

A instrução a seguir converte uma string em um DATEvalor.

SELECT STR_TO_DATE('21,5,2013','%d,%m,%Y');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Saída:

+-------------------------------------+
| STR_TO_DATE('21,5,2013','%d,%m,%Y') |
+-------------------------------------+
| 2013-05-21                          |
+-------------------------------------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Com base na sequência de formato ‘%d, %m, %Y’, a STR_TO_DATE()função verifica a sequência de entrada ‘21,5,2013’.

  • Primeiro, ele tenta encontrar uma correspondência para o %despecificador de formato, que é um dia do mês (01 a 31), na string de entrada. Como o número 21 corresponde ao %despecificador, a função considera 21 como o valor do dia.
  • Segundo, como o caractere literal vírgula (,) na string de formato corresponde à vírgula na string de entrada, a função continua verificando o segundo especificador de formato %m, que é um mês (01 a 12), e descobre que o número 5 corresponde com o %mespecificador de formato. Leva o número 5 como valor do mês.
  • Terceiro, depois de combinar a segunda vírgula (,), a STR_TO_DATE()função continua encontrando uma correspondência para o terceiro especificador de formato %Y, que é um ano de quatro dígitos, por exemplo, 2012,2013, etc., e leva o número 2013 como o valor do ano.

A STR_TO_DATE()função ignora caracteres extras no final da string de entrada quando analisa a string de entrada com base na string de formato. Veja o exemplo a seguir:

SELECT STR_TO_DATE('21,5,2013 extra characters','%d,%m,%Y');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Saída:

+------------------------------------------------------+
| STR_TO_DATE('21,5,2013 extra characters','%d,%m,%Y') |
+------------------------------------------------------+
| 2013-05-21                                           |
+------------------------------------------------------+
1 row in set, 1 warning (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Define STR_TO_DATE()todos os valores de data incompletos, que não são fornecidos pela string de entrada, como NULL. Veja o exemplo a seguir:

SELECT STR_TO_DATE('2013','%Y');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+--------------------------+
| STR_TO_DATE('2013','%Y') |
+--------------------------+
| NULL                     |
+--------------------------+
1 row in set, 1 warning (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Como a string de entrada fornece apenas um valor de ano, a STR_TO_DATE()função retorna um valor de data que tem mês e dia definidos como NULL. Observe que no MySQL 5.7 ou anterior, o STR_TO_DATE()mês e o dia são definidos como zero.

O exemplo a seguir converte uma string de hora em um TIMEvalor:

SELECT STR_TO_DATE('113005','%h%i%s');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+--------------------------------+
| STR_TO_DATE('113005','%h%i%s') |
+--------------------------------+
| 11:30:05                       |
+--------------------------------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Semelhante à parte da data não especificada, a STR_TO_DATE()função define a parte da hora não especificada como zero, veja o exemplo a seguir:

SELECT STR_TO_DATE('11','%h');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+------------------------+
| STR_TO_DATE('11','%h') |
+------------------------+
| 11:00:00               |
+------------------------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

O exemplo a seguir converte a string em um DATETIMEvalor porque a string de entrada fornece partes de data e hora.

SELECT STR_TO_DATE('20130101 1130','%Y%m%d %h%i') ;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+--------------------------------------------+
| STR_TO_DATE('20130101 1130','%Y%m%d %h%i') |
+--------------------------------------------+
| 2013-01-01 11:30:00                        |
+--------------------------------------------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Resumo

  • Use a STR_TO_DATE()função MySQL para converter strings em valores de data e hora.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *