MySQL: Somando datas corretamente com CURDATE

A função CURDATE não funciona corretamente para a adição de dias que extrapolam o calendário. Como exemplo, a instrução a seguir retornar uma data inexistente:

// acrescentando 120 dias a data atual
 > SELECT CURDATE()+120;
 > 20071325

Para resolver isso é usada uma outra função chamada DATE_ADD, responsável pela soma correta de dias em uma determinada data:

// acrescentando 120 dias a data atual
 > SELECT DATE_ADD(CURDATE(), INTERVAL 120 DAY);
 > 2008-04-03

O mesmo pode ser feito para subtrair dias de uma data com a função DATE_SUB.

This entry was posted in MySQL and tagged , , , , , , , , . Bookmark the permalink.

14 Responses to MySQL: Somando datas corretamente com CURDATE

  1. Júnior says:

    Vlw, me ajudou bastante essa função!

  2. Fabiano Carboni says:

    Deixo aqui meu agradecimento pela função.

    Um Abraço e sucesso.

    Fabiano Carboni

  3. Aline says:

    Muito Obrigada pela função, melhor do que fazer via código de programação.
    =)

  4. Bruno Pulis says:

    Cara simplesmente coisa linda de DEUS!!

    Muito Obrigado por divulgar =D

  5. Estava pensando em fazer a soma de datas direto no PHP, mas como era um insert no banco resolvi procurar algo direto para melhorar a performance. Muito útil seu post! Obrigado!

  6. Josueldo says:

    Prezados,
    veja bem,
    Estou precisando pegar uma data no banco de dados mysql e comparar com a data atual, vale lembrar que essa data que buscarei no banco de dados, está la desde o cadastro do usuario. Após essa, comparação, se o resultado for igual a zero, não deixar o usuario fazer login no sistema. ja tenho o sistema, só falta comparar essas suas datas para chegar ao resultado de zero, porque se for maior que zero tera acesso normal ao conteudo restrito.

  7. Anderson says:

    Tenho um mês e quero que a partir dele me traga os 11 meses anteriores.
    Como posso fazer? Estou me batendo um tempão.
    Obrigado

  8. paulo robson says:

    bela dica amigo

  9. Marcelo Ribeiro Machado says:

    Prezado amigo,
    desde já peço que perdoe minha ignorância!
    Como posso fazer para adicionar dias a uma data já armazenada em meu banco mysql?

    Att.

    • Paulino Michelazzo says:

      Faça um update no campo da tabela que deseja.

      update set = where =

      Saudações

      • Marcelo Ribeiro Machado says:

        Obrigado pela tua pronta resposta, amigo! Acho que não me expressei bem. Quero pegar uma data do meu banco (futura, provavelmente) e adicionar ou subtrair dias , para uma previsão por exemplo. Tipo, faltam tantos dias, atrasou tantos dias …

        • Paulino Michelazzo says:

          Numa query retornando para um programa?

          Da mesma forma como está no post, somente trocando o CURDATE:

          SELECT DATE_ADD(campo_data, INTERVAL 120 DAY);

          Saudações

          • Marcelo Ribeiro Machado says:

            Show, amigo! Vou testar!
            Valeu!
            Grande abraço e obrigado !!!

Leave a Reply

Your email address will not be published. Required fields are marked *