24 jan 2014
Utilizando a função DATE_SUB() para cálculo de datas no MySQL
Olá pessoal, hoje vamos falar sobre instruções SQL no MySQL, mas pretendo iniciar uma série de artigos sobre consultas avançadas. Instruções que aparentemente não tem importância e nem utilidade até aparecer um cliente com uma necessidade maluca e podem ter certeza, isso vai acontecer!!!
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 …