Data dinâmica?

12/03/2008

0

É o seguinte essa linha de código eu ja testei e funciona:
[b:2b61dfe36f]obs.: estou usando o convert e datetime porque busco de um campo que tem data e hora juntos e eu desejo pegar apenas a data para fazer as comparações[/b:2b61dfe36f]

convert(datetime,´01/02/2008´,103)  AND convert(datetime,´29/02/2008´,103)


coloco ela numa condição where para o codigo fazer a busca nessa data determinada, so que é o seguinte, dessa forma o código esta estático, eu sempre vou ter que mecher para buscar o mês anterior, explico melhor!
Eu preciso que sempre que entrar no mês exemplo: saimos de fevereiro e agora estamos em março, este codigo deveria automaticamente pegar de 01/02 ate 29/02 sem que eu va lá e mude.
Estamos em março, quando for abril eu gostaria que automaticamente ele pegasse 01/03 ate 31/03 sem que eu mude.

Alguém pode me ajudar?

Espero ter sido claro.... :p

valeu!


Ricardonp

Ricardonp

Responder

Posts

12/03/2008

Edu2099

Se puder usar variáveis:

declare @d1 datetime
declare @d2 datetime

select @d1 = convert(datetime, left(convert(varchar, dateadd(MM, -1, getdate()), 112), 6) + ´01´)
select @d2 = dateadd(SS, -1, convert(datetime, left(convert(varchar, getdate(), 112), 6) + ´01´))

select getdate(), @d1 d_inicio, @d2 d_fim


Se não puder, dá pra usar direto na query:

select getdate(), convert(datetime, left(convert(varchar, dateadd(MM, -1, getdate()), 112), 6) + ´01´) d_inicio, dateadd(SS, -1, convert(datetime, left(convert(varchar, getdate(), 112), 6) + ´01´)) d_fim



Responder

12/03/2008

Ricardonp

Deixa eu colocar a situação exata pra você ver como se encaixaria, o codigo estático é esse:

SELECT "TipoTarefa", ´Fora do Prazo de Solução´ as Tipo, count("TipoTarefa")qtd
FROM vw_tarefas
Where "TempoSoluçãoTarefaExpirado" = ´Sim´ and  "TipoTarefa" = ´Agentes Externos´ 
and "PrazoSoluçãoTarefa" BETWEEN convert(datetime,´01/02/2008´,103) AND convert(datetime,´01/03/2008´,103) 
Group by "TipoTarefa" 


Como que eu encaicho esse seu código nele?
eu não preciso mostrar as datas, eu preciso mostrar as tarefas de Agentes Externos que estão fora do prazo de solução.


Responder

12/03/2008

Ricardonp

[b:da8268a7b2]cara eu resolvi
o seu codigo é d++++
valeu mesmo!!!!
obrigado!!!![/b:da8268a7b2]


Responder

13/03/2008

Emerson Nascimento

não seria somente:

SELECT
  "TipoTarefa", ´Fora do Prazo de Solução´ as Tipo,
  count("TipoTarefa") qtd
FROM
  vw_tarefas
Where
  "TempoSoluçãoTarefaExpirado" = ´Sim´
  and  "TipoTarefa" = ´Agentes Externos´
  and Month("PrazoSoluçãoTarefa") = Month(Getdate())
Group by
  "TipoTarefa"


note que foi somente avaliar o mês que o problema foi resolvido.


Responder

13/03/2008

Emerson Nascimento

na verdade faltou comparar o ano:

SELECT
  "TipoTarefa", ´Fora do Prazo de Solução´ as Tipo,
  count("TipoTarefa") qtd
FROM
  vw_tarefas
Where
  "TempoSoluçãoTarefaExpirado" = ´Sim´
  and  "TipoTarefa" = ´Agentes Externos´
  and Year("PrazoSoluçãoTarefa") = Year(Getdate())
  and Month("PrazoSoluçãoTarefa") = Month(Getdate())
Group by
  "TipoTarefa"



Responder

20/03/2008

Edu2099

Tem que subtrair um mês do getdate() também neste caso que vc mandou.

Usar as funções month e year funcionam, mas o problema é que, pelo fato de serem justamente funções, o índice não funcionará. Provavelmente o banco fará um table scan.

Para garantir o uso do índice, o ideal é jogar as datas início e fim para variáveis e então compará-las na query.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar