GARANTIR DESCONTO

Fórum Conversao de datas para clausula where #35286

21/07/2009

0

Senhores, muito obrigado antecipadamente aqueles que puderem me ajudar.

Estou com o seguinte problema ( pouco conhecimento de SQLServer)

tenho um qry basicamente assim

 
select * from 
  execucoes e
where
    (cast(floor(cast(E.Data as float)) as datetime) = isnull(:Data, cast(floor(cast(E.Data as float)) as datetime)))


Reparem com foi truncada essa data, esse exemplo funciona, mas eu preciso complicar o mesmo.
De forma que:
Eu terei de passar duas datas DATA_INI e DATA_FIM sendo que se o user preencher as duas terei de usar um BETWEEN para verificar o result, mas se ele passar somente a primeira data DATA_INI , eu teria de executar a verificacao somente com a data passada.

Seque abaixo uma tentativa minha que nao deu certo, talvez com esse codigo fique mais facil de visualizar o que eu pretendo.

 
select
e.idexecucao 
,cast(floor(cast(E.Data as float)) as datetime) 
from
execucoes e 
where
( cast(floor(cast(E.Data as float)) as datetime) between 
       isnull(:DATA_INI, cast(floor(cast(E.Data as float)) as datetime)) and
       isnull(:DATA_FIM , cast(floor(cast(E.Data as float)) as datetime)) ) or
     (cast(floor(cast(E.Data as float)) as datetime) = isnull(:DATA_INI, cast(floor(cast(E.Data as float)) as datetime)) and
  :DATA_FIM is null
)
 order by
e.data


Se algum dos colegas puderem me ajudar, ficarei muito grato.


Josehenrique

Josehenrique

Responder

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

Aceitar