ADSENSE

ADSENSE

terça-feira, 5 de outubro de 2010

Utilização de datas no MySQL

Aposto que muitos programadores já tiveram problema para lidar com datas em SGDB, pensando nisso estou publicando este artigo que achei na internet não sei qual é o criador, mas foi de grande utilidade quando comecei a  programar.

Segue abaixo o artigo .

O artigo abaixo tem como objetivo  facilitar o entendimento do manuseio de datas dentro dos padrões brasileiros, um dos maiores problemas na manipulação de dados. Para isso tomamos como base o SGBD MySQL 5.


Para manipularmos dados do tipo DATA, podemos definir a coluna como DATE, DATETIME ou TIMESTAMP, sendo que suas principais características são:

# DATE                           esta no formato AAAA-MM-DD
# DATETIME                 esta no formato AAAA-MM-DD HH:MM:SS
# TIMESTAMP              esta no formato AAAAMMDDHHMMSS

Apesar das datas do tipo DATETIME e TIMESTAMP utilizarem hora, minuto e segundo, podemos utilizar seu conteúdo somente com a data. Para isso, utiliza-se a função DATE_FORMAT(date,format), que transforma a data apresentada para o formato desejado. Também podemos utilizar essa função para colocar qualquer tipo de data no formato mais adequado para nossa aplicação, como por exemplo no formato "DD/MM/AAAA".

As datas são armazenadas no formato norte-americano e, para obtermos o resultado no formato Brasileiro, devemos utilizar a função acima:

Ex: se for necessário apresentar a data de uma determinada transação no formato
"DD/MM/AAAA" deve-se fazer o comando de seleção com a seguinte sintaxe:

SELECT DATE_FORMAT(nome_da_coluna_com_a_data, '%d/%m/%Y')
FROM nome_da_tabela;

Atenção especial deve ser dada às colunas definidas como "TIMESTAMP", pois nelas ficam depositados data e horário de atualização da linha na tabela, isto é: quando é feita uma mudança em qualquer dado de uma linha da tabela o dado da coluna definida como TIMESTAMP é atualizado com o momento atual.

Para melhor entender o uso dos tipos de data no MySQL, apresentamos a seguir comandos que demonstram o resultado de datas formatadas:

SELECT * FROM FORMATODATA;
SELECT DATE_FORMAT(DT_DateTime, '%d/%m/%Y') as 'DATETIME',
DATE_FORMAT(DT_Date, '%d/%m/%Y') as 'DATE',
DATE_FORMAT(DT_Timestamp, '%d/%m/%Y') as 'TIMESTAMP'
FROM FORMATODATA;

Para fazermos uso da data atual, devemos utilizar a função CURDATE(), que retornará a data corrente no formato AAAA-MM-DD e se necessitarmos a data no formato AAAAMMDD utlizamos a função CURDATE() + 0.
Ex.|
SELECT CURDATE(), CURDATE + 0;

Para obtermos a diferença de dias entre duas datas, utilizamos a função DATADIFF(data1, data2).
Ex.|
SELECT DATEDIFF('2007-10-30 23:59:59','2007-12-31')

Para somarmos dias a uma data, utilizamos a função DATE_ADD(date,INTERVAL exprtype).
Ex.|
SELECT DATE_ADD('2005-12-31 23:59:59', INTERVAL 1 DAY);

Para subtrairmos dias a uma data, utilizamos a função SUBDATE (date,INTERVAL exprtype).
Ex.|
SELECT SUBDATE('2005-12-31 23:59:59', INTERVAL 5 DAY);

Para obtermos o dia da semana, utilizamos a função DAYOFWEEK(date).
Ex.|
SELECT DAYOFWEEK('1998-02-03');

Para obtermos o dia do ano utilizamos a função DAYOFYEAR(date).
Ex.|
SELECT DAYOFYEAR(CURDATE());

Para obtermos o momento atual, utilizamos a função NOW() ou SYSDATE().
Ex.|
SELECT NOW(), SYSDATE();

Nenhum comentário:

Postar um comentário