Ir para conteúdo
Santos_2015

filtro sem informar campo data [resolvido]

Recommended Posts

Galera é o seguinte,

 

tenho filtro antes do montar meu select, tenho três campos no filtro: cod_tipo_item_despesa, data_inicio e data_fim. só que caso a data não tenha sido informada, minha consulta retorna falso, segue sql:

select...

where desp.cod_tipo_item_despesa like :cod_tipo_item_despesa 
			and DATE_FORMAT(desp.data_despesa,'%d/%m/%Y') BETWEEN :data_inicio AND :data_fim

 

Thanks.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual data não foi informada ?

 

Um valor não informado (null) sempre retorna false em uma pesquisa.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, Motta disse:

Qual data não foi informada ?

 

Um valor não informado (null) sempre retorna false em uma pesquisa.

 

 

nenhuma das duas, nem data_inicio nem data_fim(por padrão quando não é informado é enviado "1969-12-31", tentei tratar substituindo por '%' mas não me retornou false na pesquisa), no caso seria informado apenas o "cod_tipo_item_despesa".

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ponha uma critica não permitindo data nula na pesquisa 

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, Motta disse:

Ponha uma critica não permitindo data nula na pesquisa 

Mas o problema é que ela pode ou não ser informada, não é obrigatório

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente com coalesce 

select...

where desp.cod_tipo_item_despesa like :cod_tipo_item_despesa 
            and DATE_FORMAT(desp.data_despesa,'%d/%m/%Y') 
                  BETWEEN COALESCE(:data_inicio,MAKEDATE(2010,1)) and 
                          COALESCE(:data_fim,CURDATE())

vide

 

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_curdate

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_makedate

 

Nota , não uso Mysql pode ter algum erro de síntaxe nisto mas a ideia básica e tratar o valor nulo.

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 horas atrás, Motta disse:

Tente com coalesce 


select...

where desp.cod_tipo_item_despesa like :cod_tipo_item_despesa 
            and DATE_FORMAT(desp.data_despesa,'%d/%m/%Y') 
                  BETWEEN COALESCE(:data_inicio,MAKEDATE(2010,1)) and 
                          COALESCE(:data_fim,CURDATE())

vide

 

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_curdate

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_makedate

 

Nota , não uso Mysql pode ter algum erro de síntaxe nisto mas a ideia básica e tratar o valor nulo.

 

legal, já havia tentado com coalesce, pelo que entendi está "amarrando" os intervalos... vou tetar aqui, Valeu.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por icleversonsilva
      Estou tendo que desenvolver um terminal ssh para trabalho da faculdade que seja administrado por IP, já fiz todos os procedimentos mas meu problema é que quando crio um certo usuário com data de vencimento pra 5 dias eu entro no terminal da vps pra ver se mudou a data de forma certa lá mostra a data muito acima pra vencer aquele usuário no ano 4756 e não pra vencer daqui a 5 dias como eu queria.
      Alguém por gentileza poderia me ajudar, é meio urgente
      Desde já obrigado

    • Por Gustavo Sobral
      Alguém sabe como fazer um comando sql para retornar um range de idades?
       
      Por exemplo, na tabela pessoa eu tenho a data de nascimento. Eu preciso então trazer todas as pessoas com idade entre 20 e 30 anos.
    • Por Mark Augusto
      Olá, andei pesquisando na internet e aqui no fórum algum tópico que fale a respeito de programar postagens para mudarem de status com base em uma determinada data - pode ser que eu esteja pesquisando com palavras erradas, mas não achei nada a respeito, infelizmente - Assim como acontece com a programação de postagens do facebook.
       
      É o seguinte, colocaria uma data em um campo e essa seria a referencia para uma determinada postagem mudar de "Status" no banco de dados.  
      Espero que tenham me entendido, desde já agradeço. 
    • Por Anderson.dsm
      Olá, estou criando um sistema de postagens, ao fazer a postagem eu tenho os seguintes conteudos...
       
      Título
      Descrição
      Imagem
      Publicado em: Dia/mês/ano - hora
      Publicado por: Nome
       
      Mas eu gostaria que quando eu fisse a postagem fosse assim: Dia/mês/ano há 1 minuto, e assim por diante até chegar 24:00 horas, depois disso só mostra-se isso  ->
       
      Publicado em: Dia/mês/ano há 1 dia, 2 dias, 3 dias e por diante até chegar o ano. 1 ano, 2 anos. Etc, alguém pode me explicar como fazer isso. 
       
      Sei apenas publicar para que mostre a hora e data, mas não a contagem como expliquei. Agradeço quem ajudar.
       
      Um exemplo disso que expliquei está no anexo (print) que mandei..

    • Por Santos_2015
      Boa noite,
       
      Estou com um problema em um Select, tenho dois campos, data_inicio, data_final do tipo date, estou verificando o período no meu SQL com CURDATE();
      Seria mais ou menos assim:
      Select data_inicio,data_final from periodo where {aqui eu queria se a data_final não existisse ou fosse igual '0000-00-00' comparar com a data_inicio} < (curdate() + interval 30 day)  
      Alguém tem alguma ideia? 
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.