Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
fspjonny

PHP RESOLVIDO criar um filtro diferente com uso do like no MySql

Recommended Posts

Boma dia!

 

Eu tenho um campo na tabela com esse formato: YYYY-MM-DD (2018-07-09).

 

E o seguinte filtro é passado na Query para selecionar somente o mês: LIKE '%07%'

SELECT data_nasc FROM associados WHERE data_nasc LIKE '%07%'

 

Tem como "dizer" ao LIKE que ignore o ano (YYYY) e o dia (DD) e me retorne tudo que tem o mês igual 07 (MM)?

 

Sinceramente não sei se o LIKE tem esse tipo de recurso extra ou se é somente eu não sei usar ele plenamente ainda, porque não achei essas respostas na web.

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que não seja possivel fazer deste modo, pelo mysql, pois voce tambem iria obter os resultados dos dias 07, e do ano 2007, e nao apenas dos meses , porque o like nao faz destinção entre mes, dia ou ano.

1 - voce pode criar um funcao em php que pega o valor total e usa o a funcao substr para diferenciar o mes do ano e dia.

2 - voce pode criar mais um campo na sua base com apenas meses

3 - voce tambem pode fazer um select do dia 01-07 ao dia 31-07 com comando BETWEEN do mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, YAN ALEXANDRE disse:

Acredito que não seja possivel fazer deste modo, pelo mysql, pois voce tambem iria obter os resultados dos dias 07, e do ano 2007, e nao apenas dos meses , porque o like nao faz destinção entre mes, dia ou ano.

1 - voce pode criar um funcao em php que pega o valor total e usa o a funcao substr para diferenciar o mes do ano e dia.

2 - voce pode criar mais um campo na sua base com apenas meses

3 - voce tambem pode fazer um select do dia 01-07 ao dia 31-07 com comando BETWEEN do mysql

Boa tarde Yan, é eu sei, com a mascara %07%, eu estou dizendo a query que é qualquer resultado 07 não importando a posição dele dentro da string.

No entanto imaginei que o SQL tivesse uma outra máscara de exclusão(mais refinada) imaginemos o tipo #%07%#, onde o # seria algo como: "ignore para trás ou para frente o restante da string", assim como o % faz, então na string 2018-07-09 essa máscara imaginária excluiria 2018- e -09.

 

Ok, se não existe, vou ter que ir pro braço!

 

Já tinha implementado o método de substr, mas como são centenas de registros, achei inviável ficar destrinchando e testando registro a registro, aumentando o ciclo e o consumo de memória.

 

Mas a ideia do select usando Between, é boa, eu elimino de cara o que não preciso e posso destrinchar a data em dias no mês corrente.

 

Obrigado mais uma vez Yan!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@fspjonny Em vez de utilizar assim :

SELECT data_nasc FROM associados WHERE data_nasc LIKE '%07%'

tente utilizar assim :

SELECT data_nasc FROM associados WHERE data_nasc LIKE '%-07-%'

o mês é o único que fica entre os 2 traços, então acredito que não pegue o dia e nem o ano;

Editado por luscas
  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 09/07/2018 às 19:06, luscas disse:

@fspjonny

tente utilizar assim :


SELECT data_nasc FROM associados WHERE data_nasc LIKE '%-07-%'

o mês é o único que fica entre os 2 traços, então acredito que não pegue o dia e nem o ano;

 

Você foi 101% acertivo, eu testei isso hoje que mexi nesse projeto, e filtra corretamente dentro da máscara que você propôs, Muito bem observado!!!

 

Muito Obrigado @luscas !

  • Curtir 2

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






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×