Convertendo strings de data no MySQL utilizando STR_TO_DATE

Convertendo strings de data no MySQL utilizando STR_TO_DATE

Neste artigo vamos ver como trabalhar com a função STR_TO_DATE do MySQL para converter string em datas no formato aaaa-mm-dd

A string que vamos usar para conversão será esta:

 

"1965 Mar 18 0834"

 

Para converter esta string numa data no formato aaaa-mm-dd, a função STR_TO_DATE() precisa receber dois parâmetros. O primeiro parâmetro é esta string contendo uma informação que representa uma data, o segundo parâmetro é o formato como os componentes da data estão organizados na string informada. Nossa consulta ficará da seguinte forma:

 

SELECT STR_TO_DATE("1965 Mar 18 0834", "%Y %b %d %H%i") as data

 

E o resultado gerado foi:


1965-03-18 08:34:00

 

Vamos entender o segundo parâmetro. Nele foi informado o seguinte:

 

%Y %b %d %H%i

 

Este é o formato da data em nosso campo string. Seu significado é:

 

%Y - Ano

%b - Mês abreviado

%d - Dia

%H - Hora

%i - Minutos

 

Se a nossa string de data tivesse um formato diferente, seria necessário ajustar o segundo parâmetro. Vamos ver um segundo exemplo:

 

"1965 March 18 0834"

 

Este exemplo tem uma pequena diferença em relação ao anterior\'. O mês não está abreviado.

Para converter, nossa consulta ficaria da seguinte forma:

 

SELECT STR_TO_DATE("1965 March 18 0834", "%Y %M %d %H%i") as data

 

Qual a diferença em relação a conversão anterior? No primeiro exemplo o mês era abreviado, então utilizamos na máscara do formato o parâmetro %b. Como o mês não está mais abreviado, ele foi substituído por %M

Para um melhor aproveitamento, precisamos conhecer quais os formatos que podem ser combinados para corresponder à nossa string de data. As opções disponíveis são os seguintes:

 

%Y - Ano com quatro dígitos (ex: 2024)

%y - Ano com dois dígitos (ex: 24)

%M - Nome completo do mês (ex: Janeiro)

%b - Nome abreviado do mês (ex: Jan)

%m - Mês como número (01 a 12)

%d - Dia do mês como número (01 a 31)

%H - Hora em formato 24 horas (00 a 23)

%h - Hora em formato 12 horas (01 a 12)

%i - Minutos (00 a 59)

%s - Segundos (00 a 59)

%p - AM ou PM

%W - Nome completo do dia da semana (ex: Segunda-feira)

%a - Nome abreviado do dia da semana (ex: Seg)

%u - Número da semana do ano (01 a 53)

 

Vamos ver outros exemplos de conversão de string de datas, fazendo alterações no formato da data original.

 

SELECT STR_TO_DATE("18 mar 1965 0834", "%d %b %Y %H%i") as data

 

SELECT STR_TO_DATE("18, 03, 1965", "%d, %m, %Y") as data

 

SELECT STR_TO_DATE("1965, 03, 18", "%Y, %m, %d") as data

 

SELECT STR_TO_DATE("1965 03 18 0834", "%Y %m %d %H%i") as data

 

 

Outros conteudos que podem ser de seu interesse

Máscaras para CPF, CNPJ e outros tipos de dados com SQL
30/08/2020SQL

Máscaras para CPF, CNPJ e outros tipos de dados com SQL

Neste artigo você vai ver exemplos de como aplicar máscaras em dados nos banco de dados SQL Server e MySQL

Saiba mais...
Gerando sequências de números inteiros com SQL
26/02/2023SQL

Gerando sequências de números inteiros com SQL

Veja como criar sequências de números inteiros com SQL

Saiba mais...

Conteúdo sobre banco de dados sem complicação!