Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera,
preciso de uma ajuda aqui,
tenho campo do tipo data(Y-m-d) , dependendo de minha busca vou usa-ló com between ou não, segue sql:
...
where
situacao like :situacao_pagamento
and
data_pagamento
if(:data_inicio and :data_fim = null,is null,
between :data_inicio and :data_fim)
tentei fazer com if
se data_incio e data_final (parâmetros passados) for null, recebe is null(para comparar com o campo data_pagamento), caso contrario iriar entrar no beween...
mas não rolou...
>
Em 07/09/2018 at 14:04, Motta disse:
( (:data_inicio is null and :data_fim is null)
or
(Data_pagamento between :data_inicio and :data_fim is null) )
Exatamente.
A performance pode ser um problema todavia,
>
15 horas atrás, Motta disse:
A performance pode ser um problema todavia,
Já verifiquei isso, não teve uma boa performance, mas estou avaliando a viabilidade de fazer isso,pois é um select com "quebra", teve um impacto inesperado nas informações.
ObrigadoTalvez com coalesce
Datapagamento between coalesce(:datade,datapagamento) and coslesce(:dataate,datapagamento)
>
Em 09/09/2018 at 15:47, Motta disse:
Talvez com coalesce
Datapagamento between coalesce(:datade,datapagamento) and coslesce(:dataate,datapagamento)
não retornou nada, já havia tentado.. tentei dessa forma tambem:
data_pagamento between coalesce(:data_inicio,null) and coalesce(:data_fim,null)
aqui está o problema estou verificando entre null e null, quando não passo nenhuma data.
Faço assim como disse no Oracle com NVL.
>
1 hora atrás, Motta disse:
Faço assim como disse no Oracle com NVL.
No mysql não existe o NVL, não seria a mesma coisa do coalesce ou if null?
Para mim seria ...
>
20 horas atrás, Motta disse:
Para mim seria ...
Certo, mas tentei dessa forma, não consegui resultado.
>
Em 10/09/2018 at 22:48, Motta disse:
Para mim seria ...
Resolvi dessa forma:
and
((:data_inicio is null and :data_fim is null)
or
(:data_inicio is not null and :data_fim is not null) and (desp.data_pagamento between :data_inicio and :data_fim))
Valeu!
( (:data_inicio is null and :data_fim is null)
or
(Data_pagamento between :data_inicio and :data_fim is null) )