trvanjos 0 Report post Posted September 6, 2011 Boa tarde a todos, Venho aqui pedir uma ajuda, Preciso fazer uma com consulta em MySQL que liste 15 dias depois e 15 dias antes do dia atual. Consegui listar os do 15 dias depois vejam: select campo_tabela, date_format(campo_data,'%d/%m/%Y')as data from tabela where day(campo_data) = day(curdate()+15) Está correto ? Alguém pode me dar uma mão? Obrigado ! Share this post Link to post Share on other sites
rmlm 0 Report post Posted September 6, 2011 Bem eu não estou a perceber... Como é que queres obter registos no futuro? Você que mostrar os registos 15 dias depois da data em que estamos... a não ser que tenha criado registos com datas adiantadas. 15 dias antes da data actual é possível, porque é passado. A sua Query também me parece mal, pois você só mostra os registos que tem a data actual + 15 dias. Comparar apenas os dias também não é correcto pq tem que ter em conta os meses e anos... Se puder explicar melhor o problema e meter a tabela aqui será mais fácil de lhe dar a resolução. Cumps :) Share this post Link to post Share on other sites
trvanjos 0 Report post Posted September 6, 2011 Bem eu não estou a perceber... Como é que queres obter registos no futuro? Você que mostrar os registos 15 dias depois da data em que estamos... a não ser que tenha criado registos com datas adiantadas. 15 dias antes da data actual é possível, porque é passado. A sua Query também me parece mal, pois você só mostra os registos que tem a data actual + 15 dias. Comparar apenas os dias também não é correcto pq tem que ter em conta os meses e anos... Se puder explicar melhor o problema e meter a tabela aqui será mais fácil de lhe dar a resolução. Cumps :) Primeiramente obrigado por responder, Bom vamos la, na minha tabela tenho registros de vários anos 1998-1999 etc etc, eu tenho que desprezar o ano e ficar só com o o dia e mês exemplo: hoje é dia 6 quero mostrar os registros de 15 dias depois do dia 6. 06/09 + 15 = 21/09, então irei mostrar apenas os registros que começarem com o dia 21 e ao contrário a mesma coisa exemplo: hoje é dia 06/09-15 = 22/08 irei exibir apenas os registros do dia 22/08 Fui mais claro? Obrigado ! Share this post Link to post Share on other sites
rmlm 0 Report post Posted September 6, 2011 Bem eu não estou a perceber... Como é que queres obter registos no futuro? Você que mostrar os registos 15 dias depois da data em que estamos... a não ser que tenha criado registos com datas adiantadas. 15 dias antes da data actual é possível, porque é passado. A sua Query também me parece mal, pois você só mostra os registos que tem a data actual + 15 dias. Comparar apenas os dias também não é correcto pq tem que ter em conta os meses e anos... Se puder explicar melhor o problema e meter a tabela aqui será mais fácil de lhe dar a resolução. Cumps :) Primeiramente obrigado por responder, Bom vamos la, na minha tabela tenho registros de vários anos 1998-1999 etc etc, eu tenho que desprezar o ano e ficar só com o o dia e mês exemplo: hoje é dia 6 quero mostrar os registros de 15 dias depois do dia 6. 06/09 + 15 = 21/09, então irei mostrar apenas os registros que começarem com o dia 21 e ao contrário a mesma coisa exemplo: hoje é dia 06/09-15 = 22/08 irei exibir apenas os registros do dia 22/08 Fui mais claro? Obrigado ! Ah já percebi! Sendo assim, a query está bem.. deve é comparar também o mes Share this post Link to post Share on other sites
trvanjos 0 Report post Posted September 6, 2011 Bem eu não estou a perceber... Como é que queres obter registos no futuro? Você que mostrar os registos 15 dias depois da data em que estamos... a não ser que tenha criado registos com datas adiantadas. 15 dias antes da data actual é possível, porque é passado. A sua Query também me parece mal, pois você só mostra os registos que tem a data actual + 15 dias. Comparar apenas os dias também não é correcto pq tem que ter em conta os meses e anos... Se puder explicar melhor o problema e meter a tabela aqui será mais fácil de lhe dar a resolução. Cumps :) Primeiramente obrigado por responder, Bom vamos la, na minha tabela tenho registros de vários anos 1998-1999 etc etc, eu tenho que desprezar o ano e ficar só com o o dia e mês exemplo: hoje é dia 6 quero mostrar os registros de 15 dias depois do dia 6. 06/09 + 15 = 21/09, então irei mostrar apenas os registros que começarem com o dia 21 e ao contrário a mesma coisa exemplo: hoje é dia 06/09-15 = 22/08 irei exibir apenas os registros do dia 22/08 Fui mais claro? Obrigado ! Ah já percebi! Sendo assim, a query está bem.. deve é comparar também o mes O mês atual com o da tabela ? Share this post Link to post Share on other sites
Motta 645 Report post Posted September 6, 2011 ... 15 dias depois e 15 dias antes do dia atual. ... select campo_tabela, date_format(campo_data,'%d/%m/%Y')as data from tabela where day(campo_data) between day(curdate()-15) and day(curdate()+15) Share this post Link to post Share on other sites
trvanjos 0 Report post Posted September 6, 2011 ... 15 dias depois e 15 dias antes do dia atual. ... select campo_tabela, date_format(campo_data,'%d/%m/%Y')as data from tabela where day(campo_data) between day(curdate()-15) and day(curdate()+15) Obrigado rmlm e Motta, pela ajuda, não obtive sucesso na consulta, mas o fórum está de parabéns em alguns minutos fui respondido ! Obrigado Share this post Link to post Share on other sites
Motta 645 Report post Posted September 6, 2011 :) select campo_tabela, date_format(campo_data,'%d/%m/%Y')as data from tabela where campo_data between curdate()-15 and curdate()+15 Share this post Link to post Share on other sites
trvanjos 0 Report post Posted September 6, 2011 :) select campo_tabela, date_format(campo_data,'%d/%m/%Y')as data from tabela where campo_data between curdate()-15 and curdate()+15 Perfeito ! Obrigado Motta ! Quando eu tento ver se tem algum registro de 15 dias antes(-15) o MySQL me volta a consulta vazia, sem nenhum resultado porém quando ponho 15 dias depois (+15) ele me volta todos os dias 21 da tabela. A minha pergunta é, o MySQL quando subtraio -15 do dia ele muda de mês 06/09 - 15 = 22/08 porém não me retorna nenhum resultado, o mesmo ocorre quando tento colocar +30 vejam : select date_format(datanasc,'%d/%m/%Y')as data from alunos where day(datanasc) = day(curdate()-15) essa consulta não me volta nada select date_format(datanasc,'%d/%m/%Y')as data from alunos where day(datanasc) = day(curdate()+15) essa me volta todos os registros do dia 21. Eu tenho que diferenciar o mês ? Obrigado ! Share this post Link to post Share on other sites
Motta 645 Report post Posted September 6, 2011 Rode sem a condição de data e veja o que retorna. Share this post Link to post Share on other sites
trvanjos 0 Report post Posted September 7, 2011 Rode sem a condição de data e veja o que retorna. Ok irei testar e posto a resposta, Obrigado Motta ! Share this post Link to post Share on other sites
trvanjos 0 Report post Posted September 8, 2011 Bom dia, Testei sem a condição de data e o mesmo não me retorna nenhum valor, dos 15 dias antes ! Continua a mesma coisa, se eu colocar +15 ele me mostra todos os registros do dia 23. Será que ele não está mostrando nenhum registro porque ele retorna um número negativo ? 08 - 15 = -7, e não existe dia negativo ! É isso ? Obrigado pela atenção Share this post Link to post Share on other sites
Motta 645 Report post Posted September 8, 2011 Creio que não retorne pq não tem. Share this post Link to post Share on other sites
trvanjos 0 Report post Posted September 8, 2011 Olá Motta, tudo bem ? Há registros, pois quando faço um Select especificando o dia e mês ele me retorna os registros do dia 07/08 Abraços Obrigado ! Share this post Link to post Share on other sites
Motta 645 Report post Posted September 8, 2011 Minha pergunta é, se você rodar a query select campo_tabela, date_format(campo_data,'%d/%m/%Y')as data from tabela order by campo_data existem registros na condição de 15 dias antes ? 15 dias após ? pois creio que a condição where campo_data between curdate()-15 and curdate()+15 funcione. em todo caso teste com adddate e date-sub. Share this post Link to post Share on other sites
trvanjos 0 Report post Posted September 8, 2011 Minha pergunta é, se você rodar a query select campo_tabela, date_format(campo_data,'%d/%m/%Y')as data from tabela order by campo_data existem registros na condição de 15 dias antes ? 15 dias após ? pois creio que a condição where campo_data between curdate()-15 and curdate()+15 funcione. em todo caso teste com adddate e date-sub. Sim, há registros mas enfim vou testar essas últimas alternativas que você me passou. Sem mais. Obrigado Motta ! Share this post Link to post Share on other sites