Intervalo entre datas Mysql - Duvida

Bom dia.

Tenho uma tabela de clientes onde existe uma coluna VENCIMENTO. Estou tentando fazer um select para trazer os clientes com vencimentos daqui a 10 dias somente verificando o dia e mês. Portanto, seria um select dos clientes entre hoje e com vencimento entre hoje 22/02 até 03/03. (10 dias)!!
Estou tentando fazer utilizando BETWEEN mas não estou conseguindo:

SELECT NOME, VENCIMENTO FROM CLIENTE WHERE (RIGHT(VENCIMENTO,5) BETWEEN RIGHT(CURDATE(),5) AND (RIGHT(CURDATE(),5)+10)

alguem poderia me dar uma luz??

grato

Para a data de hoje, utilize a função NOW().

e para a data futura tente utilizar dessa maneira para a data daqui a dez dias:

          DATE_ADD(DATE(NOW()), INTERVAL 10 DAY)
  • editado:
    se seu campo vencimento for do tipo date (não entendi por que usou RIGHT) sua query ficaria assim:
SELECT NOME, VENCIMENTO 
FROM CLIENTE 
WHERE VENCIMENTO BETWEEN DATE(NOW()) AND DATE_ADD(DATE(NOW()), INTERVAL 10 DAY)

Fiz e ficou assim:

SELECT NOME, VENCIMENTO FROM CLIENTE WHERE (RIGHT(VENCIMENTO,5)) BETWEEN (RIGHT(NOW(),5)) and (RIGHT(DATE_ADD(DATE(NOW()), INTERVAL 20 DAY),5))

porem não retornou nada, mesmo tendo os dados para consulta. Só lembrando que estou usando o RIGHT porque reciso somente utilizar na consulta o dia e mes das datas em questão.

**Resolvido

O uso do RIGHT era para utilizar na pesquisa somente o dia e mes da data atual e vencimento do cliente. Ficou assim:

SELECT NOME, VENCIMENTO
FROM CLIENTE
WHERE RIGHT(VENCIMENTO,5) BETWEEN RIGHT(DATE(NOW()),5) AND RIGHT(DATE_ADD(DATE(NOW()), INTERVAL 9 DAY),5)

Obrigado pela força molmedo!!!

como posso fazer um select para retornar uma data de 7 dias anteriores em um banco?

Olá Ellyson,

Utilize o date_sub:

Abraços.

_ _
Fabiano Abreu
Papo SQL - Um blog com tutoriais, dicas e truques sobre SQL

Obrigado Fabiano, resolveu meu problema.