Dev & EngARTIGO

Datas no MySQL com SQL ou PHP

Olá a todos. O artigo desta semana, como outros mais, foi uma sugestão de leitores. Como disse a vocês, não hesitem em enviar-me suas sugestões, uma vez que quero escrever artigos sempre para o agrado de todos vocês. Então, além de pedir novamente sugestões, hoje vou além. Gostaria de perguntar-lhe o que acha da minha didática para escrever. Me informe se os textos estão de fácil compreensão (minha preocupação principal), com boa leitura, e por aí vai. Conto com vocês.

No artigo Formatar datas no MySQL com SQL ou PHP, aprendemos como exibir as datas armazenadas em um banco de dados↳Banco de dados134 conteúdosSQL ou NoSQL: eis a questão!!Data · mar 2020Banco de dados: como organizar e dar segurança para milhões de dados de loteriasData · mai 20215 serviços gratuitos na cloud para bancos de dados PostgresData · fev 2025Ver tudo em Data → MySQL com uma formatação desejada. Além disso, conhecemos a forma correta de armazenar as datas no banco, e vimos que podemos utilizar SQL ou PHP↳PHP44 conteúdosPadronizando seu código com PHP CS FixerDev (Back & Front) · mai 2019Docker de imagem. Para rodar projetos PHP em menos de 30 segundosDev (Back & Front) · jan 2026PHP 7.3: conheça as novidades desta versãoDev (Back & Front) · abr 2019Ver tudo em Dev (Back & Front) → para formatá-las. Hoje, faremos o seguinte: como inserir datas no banco de dados MySQL de forma correta, seja através de instrução SQL ou via PHP.

Primeiramente, utilize a instrução SQL a seguir para criar a tabela que utilizaremos como exemplo.


CREATE TABLE inserir_datas (
  id smallint(5) unsigned NOT NULL auto_increment,
  data date NOT NULL default '0000-00-00',
  texto varchar(100) NOT NULL default '',
  PRIMARY KEY  (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

Com a tabela criada, e com uma página, em PHP, aberta no Dreamweaver, façamos o seguinte: utilize o behavior Insert Record Form Wizard para criar o formulário e os códigos necessários para a inserção dos dados no banco de dados (não vou explicar os passos para esse processo, assumindo que você tenha tal conhecimento. Caso não o tenha, leia o artigo, Formatar datas no MySQL com SQL ou PHP, e veja o procedimento).

Bom, agora precisamos responder as seguintes perguntas: o usuário irá informar a data a ser inserida? Ou ela (data) será criada automaticamente? Vamos levar em consideração ambas as perguntas e aprender como lidar com tais situações.

Como é de seu conhecimento, as datas são armazenadas no banco com o seguinte formato: aaaa-mm-dd; e os usuários brasileiro não gostarão de ter que digitar uma data em tal formato; afinal eles usam o formato dd/mm/aaaa. No artigo, Formatar datas no MySQL com SQL ou PHP, você aprenderá sobre essa questão de formatos de data. Então, precisaremos inserir a data com a seguinte lógica:

  1. O usuário informará no formato padrão brasileiro: dd/mm/aaaa;
  2. Transformaremos a data para o padrão utilizado no MySQL: aaaa-mm-dd;
  3. Após a transformação, a data será inserida.

Primeiro, vamos analisar os procedimentos que o Dreamweaver utiliza, para sabermos como adaptá-lo. Observe a imagem abaixo:

Exemplo de preparação dos dados a serem inseridos.Exemplo de preparação dos dados a serem inseridos.

Como, você pode perceber, o Dreamweaver utiliza a função GetSQLValueString para analisar o tipo de dado a ser inserido. Criei uma simples função para fazer a conversão da data, ou seja, receberá a data no formato dd/mm-aaaa e retornará aaaa-mm-dd. Observe as modificações:

Exemplo de como utilizar a função para converter a data.Exemplo de como utilizar a função para converter a data.

Código da função utilizada.


/**
 * Por Leandro Vieira Pinho
 * http://leandro.w3invent.com.br
 **/
function converter_data(strData) {
	// Recebemos a data no formato: dd/mm/aaaa
	// Convertemos a data para o formato: aaaa-mm-dd
	if ( preg_match("/",strData) == 1 ) {
		strDataFinal = "'";
		strDataFinal .= implode('-', array_reverse(explode('/',strData)));
		strDataFinal .= "'";
	}
	return strDataFinal;
}

Como você percebeu, ao invés de usarmos a função GetSQLValueString, utilizamos a função converter_data que fará com que nosso objetivo seja alcançado.

Agora, faremos todo esse processo de uma outra maneira, mais simples e rápido; utilizando um simples comando SQL. Tal comando, ao qual me refiro é o NOW() que, falando de maneira simples, retorna a data e o horário.

Sendo assim, não precisaremos do campo de formulário onde o usuário digitaria a data. O que significa dizer, que você poderá deleta-lo. Agora, observe a modificação no código:

Exemplo de como inserir a data utilizando o comando NOW().Exemplo de como inserir a data utilizando o comando NOW().

Simples, não é?

Se desejar, você pode baixar ambos os exemplos e analisá-los. No mais, espero que tenham gostado. Um forte abraço a todos.

Leandro Vieira é fundador e CEO da Apiki, que opera WordPress em engenharia, performance e ambientes gerenciados desde 2008. Criou o GEO Técnico, framework que organiza a otimização para motores generativos em seis camadas verificáveis, e o BotIAudit, ferramenta de auditoria de logs de crawlers de IA. Palestrante em Gramado Summit, Digitalks e AI Brasil.

Mais de Leandro Vieira
Ver perfil →