Data

9 jul, 2007

Utilização de datas no MySQL

Publicidade

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!