web-dev-qa-db-fra.com

Comparer uniquement le jour et le mois avec le champ de date dans mysql

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"
7
John

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"
23
Marcus Adams

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:

  1. MONTH
  2. DAYOFMONTH
8
chresse

Utilisez les fonctions MOIS et JOUR :

Essaye ça: 

SELECT *
FROM tableA a 
WHERE a.id = 1 AND MONTH(a.field) = MONTH('2000-07-10') AND 
      DAY(a.field) = DAY('2000-07-10') 
3
Saharsh Shah

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

1
Mihai Iorga