Array
(
)

Data dinâmica?

Ricardonp
   - 12 mar 2008

É o seguinte essa linha de código eu ja testei e funciona:
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

#Código

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!

Edu2099
   - 12 mar 2008

Se puder usar variáveis:

#Código

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:

#Código
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


Ricardonp
   - 12 mar 2008

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

#Código

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.

Ricardonp
   - 12 mar 2008

cara eu resolvi
o seu codigo é d++++
valeu mesmo!!!!
obrigado!!!!

Emerson
   - 13 mar 2008

não seria somente:

#Código

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.

Emerson
   - 13 mar 2008

na verdade faltou comparar o ano:

#Código

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"


Edu2099
   - 20 mar 2008

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.