Usuário com melhor resposta
Questão referente DATEADD

Pergunta
-
Help!
Gostaria de saber o porquê que no SELECT baixo obtenho o retorno do DATEADD sendo o dia 02/03/2017. O DateAdd não considera o dia corrente? Se contarmos a data de hoje mais 30 dias será o dia 01/03/2017 e não 02/03/2017.
SELECT DATEADD (dd, 30, GETDATE() ) MAIS30,
DATEADD (dd, 30, CONVERT(DATE,'20170131')) MAIS30_1Agradeço desde já a atenção dispensada!
Respostas
-
Olá,
Lembre-se, DATEADD (nos casos que o incremento é maior que 0) não começa a contar no dia atual (31/01). Começa no dia 01/02, portanto como fevereiro tem apenas 28 dias, o resultado da soma de 30 dias será dia 02/03.
OBS: O valor de incremento que é dado ao DATEADD, deve ser somado a data atual, portanto para efeitos de "prova real" inicia-se a contagem no dia seguinte (salvo se o incremento for 0, pois aí nem tem lógica contar)
Valeu!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Marcado como Resposta Rafael Binda terça-feira, 31 de janeiro de 2017 17:06
- Editado André SeccoMVP terça-feira, 31 de janeiro de 2017 22:21
Todas as Respostas
-
Olá,
Lembre-se, DATEADD (nos casos que o incremento é maior que 0) não começa a contar no dia atual (31/01). Começa no dia 01/02, portanto como fevereiro tem apenas 28 dias, o resultado da soma de 30 dias será dia 02/03.
OBS: O valor de incremento que é dado ao DATEADD, deve ser somado a data atual, portanto para efeitos de "prova real" inicia-se a contagem no dia seguinte (salvo se o incremento for 0, pois aí nem tem lógica contar)
Valeu!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Marcado como Resposta Rafael Binda terça-feira, 31 de janeiro de 2017 17:06
- Editado André SeccoMVP terça-feira, 31 de janeiro de 2017 22:21
-
Olá ,
DATEADD funciona da seguinte forma , quantos dias vai ser adicionado na data
ou seja se você quer adicionar 1 dia a partir de hoje, logo o resultado será amanha
SELECT DATEADD (DAY,1, CONVERT(DATE,'20170131'))
quando você adiciona 30 dias a logica é quantos dias a partir de hoje vou adicionar
logo o dia de hoje não entra
- Editado Wesley Neves quinta-feira, 2 de fevereiro de 2017 15:34 corriginfo
-
-
Rafael,
A nível de curiosidade, se você deseja obter a última data do mês a partir da versão 2012 a Microsoft adicionou a função EOMonth()!!!!
Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
-
-
José Diz,
Acredito que não tenha interpretado da maneira correta minha resposta, pelo visto o Rafael interpretou.
No momento que utiliza-se o DATEADD e quer tirar a "prova real" do resultado, então devemos começar a contar do dia seguinte e não do dia atual. Convenhamos que se o incremento fosse 0 não teria porque tirar a prova e nem iria "contar" nada.
Caso outros tenham a mesma interpretação, adicionei uma observação.
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Editado André SeccoMVP terça-feira, 31 de janeiro de 2017 22:17
-
Olá,
Lembre-se, DATEADD (nos casos que o incremento é maior que 0) não começa a contar no dia atual (31/01). Começa no dia 01/02, portanto como fevereiro tem apenas 28 dias, o resultado da soma de 30 dias será dia 02/03.
OBS: O valor de incremento que é dado ao DATEADD, deve ser somado a data atual, portanto para efeitos de "prova real" inicia-se a contagem no dia seguinte (salvo se o incremento for 0, pois aí nem tem lógica contar)
Valeu!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco
André,
Acredito que você esta equivocado, num vi a DateAdd fazer um incremento somente 1 quando o valor de incremento é zero, agora se você se refere a considerar a contagem ai sim faz sentido.
Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Editado Junior Galvão - MVPMVP quinta-feira, 2 de fevereiro de 2017 12:35
-
Exato Junior, me referi a contagem, tanto que no que eu escrevi tem exatamente a palavra "contar" para evitar outras interpretações:
".... DATEADD (nos casos que o incremento é maior que 0) não começa a contar no dia atual ..."
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco