Comment comparer uniquement le jour et le mois avec le champ de date dans mysql? Par exemple, j'ai une date dans une table: 2014-07-10
De même, une autre date 2000-07-10
dans une autre table. Je souhaite comparer uniquement le jour et le mois sont égaux le jour.
J'ai essayé ce format. Mais je ne peux pas avoir la réponse
select *
from table
where STR_TO_DATE(field,'%m-%d') = STR_TO_DATE('2000-07-10','%m-%d')
and id = "1"
Utilisez DATE_FORMAT à la place:
SELECT DATE_FORMAT('2000-07-10','%m-%d')
les rendements
07-10
Voici votre requête ré-écrite avec DATE_FORMAT()
:
SELECT *
FROM table
WHERE DATE_FORMAT(field, '%m-%d') = DATE_FORMAT('2000-07-10', '%m-%d')
AND id = "1"
vous pouvez le faire avec les fonctions DAYOFMONTH
et MONTH
:
SELECT *
FROM table
WHERE DAYOFMONTH(field) = 31 AND MONTH(field) = 12 AND id = 1;
EDIT: Bien sûr, vous pouvez écrire aussi si vous souhaitez comparer deux champs:
SELECT *
FROM table
WHERE
DAYOFMONTH(field) = DAYOFMONTH(field2)
AND MONTH(field) = MONTH(field2)
AND id = 1 ...;
pour plus d'informations, consultez le manuel:
Vous pouvez utiliser DATE_FORMAT
:
SELECT * FROM `table`
WHERE DATE_FORMAT(STR_TO_DATE(`field`, '%Y-%m-%d'), '%d-%m') = DATE_FORMAT(STR_TO_DATE('2000-07-10','%Y-%m-%d'), '%d-%m')
de plus, la seconde WHERE
n'est pas valide. Quoi qu'il en soit, vous voulez obtenir toutes les lignes et pas seulement id=1