O artigo abaixo objetiva 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();
Obrigado e até a próxima!