2010-12-10 5 views
1

Je dois faire un choix avec les 60 derniers jours à partir de ce jour. Par exemple:En soustrayant dates dans où clause

select * from product 
where product.expire_date = ?1 - 60 

1 est un paramètre avec la date d'aujourd'hui. Je ne peux pas le faire fonctionner, qu'est-ce que je fais mal?

J'utilise MySQL

Répondre

1

Je pense que c'est ce que vous voulez.

SELECT * 
FROM product 
WHERE product.expire_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 60 DAY) AND CURDATE() 

Notez que BETWEEN est inclusif.

NB, si votre expire_date est un champ datetime et non un champ date, vous devrez peut-être modifier un peu (c.-à-CONCAT() les cordes de temps appropriés aux références sur la partie droite de la BETWEEN, ou jeter un DATE() autour de la LHS du BETWEEN (mais vous ne plus utiliser un index sur expire_date, en supposant qu'il y en avait un.

+1

la seule chose que vous avez eu tort était de mettre le projecteur les dates. la date inférieure doit être sur le beggining. – pringlesinn

+0

@ Adriano Corrigé :) – Riedsio