Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,Preciso capturar dados em uma tabela do período dos três ultimos meses(90 dias) e não sei como fazer.Alguém pode me ajudar?
vlw
Eriva,Só um detalhe: veja que 90 dias não são três meses (existe mês com 28, 29, 30 e 31 dias), sendo assim, esta forma de verificação vai retornar resultados inesperados (isto é, errados). Concorda???Luciana
olá Luciana2,
depende da regra, no caso que você especificou estaria incorreto, teria que ser tratado de outra forma, para casos em que seria 90 dias direto estaria correto
abs
você também pode fazer assim
select dateadd(month, -3, getdate())
Eriva,
Correto!
Mas veja que o Vinícios especificou desta forma "Selecionar dados em um período de 3 meses", assim sendo, 90 dias é diferente de 3 meses, por isso mesmo que da forma que você especificou vai dá errado.
Concorda?
Da forma que o Edilesio colocou é mais correto. Embora nunca tenha feito teste.
Luciana
>
Eriva,
Correto!
Mas veja que o Vinícios especificou desta forma "Selecionar dados em um período de 3 meses", assim sendo, 90 dias é diferente de 3 meses, por isso mesmo que da forma que você especificou vai dá errado.
Concorda?
Da forma que o Edilesio colocou é mais correto. Embora nunca tenha feito teste.
Luciana
Luciana
como eu disse, depende, no caso especificado acima SIM concordo...
agora em outros casos, por exemplo tenho clientes que o prazo é 30 dias corridos e outros 1 mês, exemplo se eu emitir uma nf com data de emissão/saída hoje 28/08/2007:
select getdate() as dataPedido, dateadd(Day, 30, getdate()) as DataVectoque retorna: dataPedido DataVecto ------------------------------------------------------ ------------------------------------------------------ 2007-08-28 07:11:08.750 2007-09-27 07:11:08.750(1 row(s) affected)- para o cliente "B" 1 mês, o vecimento será em 28/09/2007, onde temos: select getdate() as dataPedido, dateadd(Month, 1, getdate()) as DataVectoque retorna:
dataPedido DataVecto ------------------------------------------------------ ------------------------------------------------------ 2007-08-28 07:12:18.357 2007-09-28 07:12:18.357(1 row(s) affected)bjssss pras moça e abs pros d+
Vinicius,Fazer da forma que Edilesio indicou também ocorre uma falha. Qual seja:1º casoselect datediff(month,'05/01/2007',getdate()) as "Qtd Meses"- o valor de retorno será: 32º casoselect datediff(month,'05/31/2007',getdate()) as "Qtd Meses"- o valor de retorno será: 3Entendeu o erro?O SQL Server entende uma fração de mês como sendo 1 mês inteiro. De 31/05/2007 até hoje não são três meses. Dá menos.Se quiser precisão, terá que bolar uma função para isso. Eu acho.ps. tem razão Eriva. Ah, você já me ajudou várias vezes.Luciana
falai camarada Vinicius,
com a função dateadd você pode pegar a data de hoje (getdate) e subtrair 90 dias
veja mais sobre datas: http://forum.imasters.com.br/index.php?showtopic=224454
t+