terça-feira, 6 de fevereiro de 2007

Trabalhando com datas usando PHP e MySQL

Há uns dias atrás resolvi desenvolver um pequeno sistema em PHP+MySQL para controle de contas. E quando se fala em controle de contas é fundamental que o programa "te avise" das contas que estão vencidas ou vencem no dia. Aí veio a preocupação como farei isso no MySQL? Como tratarei as datas se o formato do MySQL é diferente do formato usado no Brasil?




Pesquisando um pouco descobri duas funções fantásticas do MySQL (4.1>): DATE_FORMAT() e SRT_TO_DATE().

A DATE_FORMAT() é para a saída (usando o select) e recebe os parametros
campo e formato. Se você tem um campo de data chamado dt_saida por exemplo,
para exibir a data no formato dd/mm/YYYY faça assim:

SELECT *, DATE_FORMAT(dt_saida,'%d/%m/%Y) as Saida FROM tabela;

Já a SRT_TO_DATE() é para a gravação (insert) e é bem simples também:

INSERT INTO Tabela (dt_saida) values (STR_TO_DATE('09/03/2007','%d/%m/%Y'));

Caso você queira trabalhar com os campos das datas separadamente use a função EXPLODE() do PHP. Ela fuciona assim:

$DataSeparada = EXPLODE("/",$Data);

Se a variável $Data tiver o formato dd/mm/YYYY a variável $DataSeparada fica com os seguintes valores:

$DataSeparada[0] = dd

$DataSeparada[1] = mm

$DataSeparada[2] = YYYY

Isso é muito útil para desenvolver scripts de validação de datas ou no meu caso usei para cadastrar parcelamentos de contas.

Prontinho, simples rápido e fácil.

9 comentários:

Anônimo disse...

Parabéns! Você me ajudou muito!

Anônimo disse...

Parabéns,
essa dica foi ótima, simples, rapido funcional e prático.

Há um monte de tutoriais por aí sobre isso, mas eles complicam mais que ajudam ;)

valeu.. ja vou usar aqui heheh ;)
obrigado

Jesus de Aguiar Silva disse...

Nossa, bela explicação, estava precisando justamente disso... Perdi um tempão procurando esta informação....

Grande abraço

t+

Anônimo disse...

Muito bom! Parabéns. Como foi dito, vapt vupt. Rápido, fácil e eficiente.

William Barbosa

Vinícius A. de Oliveira disse...

O meu está retornandao erro sprintf() eu uso o Insert record do DW então acho que estou errando ao tentar adaptar.
Meu código está aqui me ajuda:

http://www.phpmania.org/modules.php?name=Forums&file=viewtopic&t=7830

Neto disse...

Muito bom, mostrou como se faz sem ficar enchendo linguiça e complicando como a maioria dos outros tutoriais que achei!

Anônimo disse...

absorbing activists graves yugal hurricane ecfr complements leipzig bureaucrats cast nagarjuna
semelokertes marchimundui

Anônimo disse...

Isso que eu chamo de explicação, meus parabéns, me ajudou muito

Eric Caruso disse...

mais claro que isso impossivel..valew mesmo !!