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,%d
para dia,%m
para mês e%y
para ano.
A STR_TO_DATE()
função pode retornar um valor ou DATE
com 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 DATE
valor.
SELECT STR_TO_DATE('21,5,2013','%d,%m,%Y');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
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
%d
especificador de formato, que é um dia do mês (01 a 31), na string de entrada. Como o número 21 corresponde ao%d
especificador, 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%m
especificador 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 )
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 )
+--------------------------+
| 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 TIME
valor:
SELECT STR_TO_DATE('113005','%h%i%s');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+--------------------------------+
| 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 )
+------------------------+
| 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 DATETIME
valor 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 )
+--------------------------------------------+
| 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.