Formatar data no MySQL usando date format

Fala galera, hoje vamos falar sobre como formatar datas no MySQL.
Para este tutorial, estou usando o mysql server 5.5
Basicamente o que você precisa saber e utilizar a função DATE_FORMAT do mysql
vamos criar uma tabela e popular ela com algumas datas:

CREATE TABLE IF NOT EXISTS `dates` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

INSERT INTO `dates` (`id`, `date`) VALUES
(1, '2012-10-17 13:39:55'),
(2, '2012-10-09 09:23:11'),
(3, '2012-08-24 16:47:07');

Beleza? então agora vamos restaurar esse valores e exibi-los de forma correta:

SELECT id, DATE_FORMAT( `date` , '%d/%c/%Y %H:%i:%s' ) AS `date` FROM `dates`

Fácil NE? lembrando que o formato da data sempre sera %LETRA onde letra corresponde ao campo que você deseja exibir (veja lista completa na documentação)

Gostou ? Ajude e Compartilhe!
Esta entrada foi publicada em MySQL. Adicione o link permanente aos seus favoritos.
  • Carlos

    Boa tarde Marcelo, como posso fazer as informações ficarem em %d-%c-%Y definitivamente?

    • marceloaltmann

      Bom Dia Carlos.
      Infelizmente, tu não pode alterar o padrão como o MySQL grava e retorna as datas, porem, tu pode criar uma view para a tua tabela que faça a conversão automática das datas:


      CREATE TABLE `t1` (
      `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `Nome` varchar(150) DEFAULT NULL,
      `data` date DEFAULT NULL,
      PRIMARY KEY (`ID`)
      );
      CREATE VIEW `v_t1` AS select `t1`.`ID` AS `ID`,`t1`.`Nome` AS `Nome`,date_format(`t1`.`data`,'%d-%c-%Y') AS `data` from `t1`;

      INSERT INTO t1 VALUES (NULL, 'Data 1', '2014-01-01'), (NULL, 'Data 2', NOW());

      SELECT * FROM v_t1;
      +----+--------+-----------+
      | ID | Nome | data |
      +----+--------+-----------+
      | 1 | Data 1 | 01-1-2014 |
      | 2 | Data 2 | 07-6-2014 |
      +----+--------+-----------+

      Abraço.