[PHP] criar um filtro diferente com uso do like no MySql - Programação web - Clube do Hardware
criar um filtro diferente com uso do like no MySql
PHP RESOLVIDO criar um filtro diferente com uso do like no MySql
Por fspjonny, 9 de julho em Programação web
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.
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
2 horas atrás, YAN ALEXANDRE disse:
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!
@fspjonny Em vez de utilizar assim :
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;
Em 09/07/2018 às 19:06, luscas disse:
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!!!