A função DATE_FORMAT() do MySQL

A tônica é verdadeira, não há banco de dados onde não seja necessário manipular campos de data e hora, mas isso acarreta num grave problema com relação à portabilidade do seu projeto. Aprenda a contornar esse problema utilizando a função DATE_FORMAT() do MySQL.

[ Hits: 84.756 ]

Por: Fábio Berbert de Paula em 06/11/2002 | Blog: https://www.instagram.com/alexabolada/


A função DATE_FORMAT()



Para resolver o problema de localidade, o MySQL nos oferece a função DATE_FORMAT(), que nos permite formatar a saída do valor do campo data de acordo com uma string de formatação pré-definida. Vamos criar uma tabela para ver um exemplo prático:

CREATE TABLE tblteste (
campoData timestamp
);

INSERT INTO tblteste VALUES (now());

SELECT DATE_FORMAT(campoData,'%d/%m/%Y') FROM tblteste;
No exemplo acima criamos a tabela tblteste, inserimos um registro com o valorda data atual do sistema e selecionamos o campoData no formato dd/mm/aaaa.Se quiséssemos que a data saísse no formato aaaa-mm-dd, por exemplo, poderíamos ter usado DATE_FORMAT(campoData,'%Y-%m-%d'). Os especificadores de formato estão sempre na forma %[char]. Na tabela abaixo temos uma lista de todos os especificadores de formato e seus respectivos significados:

Especificador Descrição
%M Nome do mês (January..December)
%W Nome do dia da semana (Sunday..Saturday)
%D Dia do mês com o sufixo em Inglês (1st, 2nd, 3rd, etc.)
%Y Ano, numérico, com 4 dígitos
%y Ano, numérico, com 2 dígitos
%a Nome do dia da semana abreviado (Sun..Sat)
%d Dia do mês, numérico (00..31)
%e Dia do mês, numérico (0..31)
%m Mês, numérico (01..12)
%c Mês, numérico (1..12)
%b Nome do mês, abreviado (Jan..Dec)
%j Dia do ano (001..366)
%H Hora (00..23)
%k Hora (0..23)
%h Hora (01..12)
%I Hora (01..12)
%l Hora (1..12)
%i Minutos, numérico (00..59)
%r Horário, 12 horas (hh:mm:ss [AP]M)
%T Horário, 24 horas (hh:mm:ss)
%S Segundos (00..59)
%s Segundos (00..59)
%p AM ou PM
%w Dia da semana (0=Domingo..6=Sábado)
%U Semana (00..53), onde Domingo é o primeiro dia da semana
%u Semana (00..53), onde Segunda é o primeiro dia da semana
%% Caractere `%'.

Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br

Página anterior    

Páginas do artigo
   1. Introdução
   2. A função DATE_FORMAT()
Outros artigos deste autor

Utilizando o Buffer de Gravação no Editor Vim

Enviando email em formato HTML em PHP

Comparação entre Tcl e Perl

Criando gráficos com a classe JPGraph (parte 1)

Integrando o Exim4 com o SendGrid

Leitura recomendada

OpenOffice + ODBC + MYSQL

Instalando o phpmyAdmin no Debian Etch

Administrando bancos MySQL com phpMyAdmin

Configurando Apache + MySQL + PHP no Slackware

Replicação em banco de dados MySQL

  
Comentários
[1] Comentário enviado por harleyhav em 19/03/2004 - 18:46h

Sempre é bom contarmos com pessoas como vc. É assim que iremos mais longe: Adquirindo e passando experiências uns aos outros.
Valeu!!! Continue assim!!!
harleyhav@click21.com.br

[2] Comentário enviado por harleyhav em 19/03/2004 - 18:49h

Se você puder disponibiliza também estas matérias em format PDF, ajudaria bastante. Estou estudando a respeito do MySQL, mas não sei o inglês, por isso me atrazo; tenho muita vontade de aprender. no meu perfil tem uma descrição do que estou pretendendo. Se puder me ajudar, agradeço muito.
Obrigado.

[3] Comentário enviado por germano_silva em 24/02/2005 - 21:46h

Cara muito interessante o que escreveu;

Me deu até uma luz sobre pq estou fazendo um projeto sobre PHP+MySQL e ja ouvi falar desse metodo porém ainda naum o tinha visto na pratica.
Valeu cara tu é 10


[4] Comentário enviado por rafael_nery em 19/12/2005 - 13:12h

Para consulta tudo bem, mas para inserir dados neste formato???

[5] Comentário enviado por morphors em 05/11/2008 - 08:04h

estou com a mesma dúvida q o rafael... tenho uma base de dados q preciso passar para o MySQL, e ela já esta no formato dd/mm/aaaa, inserindo desta forma em um campo "date", não vai. Estou procurando alguma função em php ou mysql q grave no formado do mysql aaaa-mm-dd. São aproximadamente 600 registros e tá complicado.

Mais valeu!!! Boa dica

[6] Comentário enviado por fabio em 05/11/2008 - 09:51h

Você pode resolver isso abrindo o arquivo SQL no VIM e usando uma expressão regular para fazer a substituição/formatação de data. Ex.:

$ vim registros.sql

Dentro do editor, digite o seguinte comando e pressione enter:

:%s/\([0-9][0-9]\)\/\([0-9][0-9]\)\/\([0-9][0-9][0-9][0-9]\)/\3-\2-\1

E pra salvar e sair:

:x

Um abraço.

[7] Comentário enviado por farmamanager em 17/07/2012 - 11:05h

Fiz no meu MySQL e funcionou (quase) perfeitamente. Usei %b e ficou em inglês. Alguém sabe como traduzir?

[8] Comentário enviado por wiltonjr em 27/09/2016 - 18:30h


[4] Comentário enviado por rafael_nery em 19/12/2005 - 13:12h

Para consulta tudo bem, mas para inserir dados neste formato???



Oi Rafael
Para inserir dados você pode usar a instrução no seguinte formato:
INSERT INTO funcionario values (07, "WILTON", '5', "INSTRUTOR", 1530.00, STR_TO_DATE("08/08/1988", "%d/%m/%Y"));


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts