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: 85.447 ]

Por: Fábio Berbert de Paula em 06/11/2002 | Blog: https://fabio.automatizando.dev


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

MP3 no Linux

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

Verificando integridade de servidores POP com PHP/sockets

Comparação entre Tcl e Perl

Implementando um tradutor de línguas no seu web site

Leitura recomendada

Introdução ao MySQL

Gerenciando banco de dados com MySQL (Parte 1)

Sincronização segura entre bancos de dados MySQL utilizando SJA

MySQL Workbench: Criando um Schema do Zero

Instalação e configuração do MySQL com phpMyAdmin no CentOS - Iniciantes

  
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