24 jan 2014
Utilizando a função DATE_SUB() para cálculo de datas no MySQL

Costumo frequentar o fórum da DevMedia, inclusive sou moderador das salas MySQL, Firebird e PHP, sempre estou respondendo a dúvidas interessantes e as vezes necessidades estranhas, mas isso acaba aguçando meus conhecimentos principalmente em MySQL e PHP.
Hoje vou demonstrar uma maneira interessante de pesquisar intervalo entre datas, fugindo do uso habitual do sinal de maior ‘>’ e ‘<‘ menor. Vamos trabalhar com a função do MySQL DATE_SUB().
DATE_SUB(date, INTERVAL expr unit): Essa função tem como objetivo subtrair um determinado valor da data passada como parâmetro. Esse valor a ser subtraído pode ser em dias (DAY), meses (MONTH), anos (YEAR) e etc., sempre informando ‘INTERVAL’.
O parâmetro unit informa qual parte da hora ou data será subtraída, abaixo segue uma tabela com os tipos aceitos pelo MySQL:
Exemplo prático, abaixo estou subtraindo 10 dias da data atual:
Agora será subtraído 10 meses da data atual:
Para finalizar esses exemplos, vamos subtrair 10 anos da data atual:
Agora que já foi passado o funcionamento básico dessa função pode surgir a pergunta:
“Mas onde eu vou usar isso?”
Existem situações onde é necessário listar registros de uma certa quantidade de dias, meses ou anos anteriores ou posteriores a uma determinada data, cálculos complexos envolvendo datas e até projeções de datas uma vez que essa função retorna meses com 30 ou 31 dias e anos bissextos. E ainda podemos montar condições WHERE complexas com esse tipo de função.
Bom pessoal até a próxima …