2010-12-10 4 views
3

J'ai une table avec des champs suivantsrequête MySQL pour l'année mois

id (int) 
name (varchar) 
dob (datetime) 

Maintenant, je besoin d'une requête qui peut correspondre mois et l'année en même temps

Ce que je me sers est en ce moment

select * from users where month(dob)='12' and year(dob)='2010' 

Je ne veux pas utiliser month() et year(), peut-il être fait en une seule chose?

Aide apprécié

Merci

Répondre

5

Il peut être exprimé que vous demandez, mais je ne pense pas que ce serait plus efficace.

where dob >= '2010-12-01' and dob <= '2010-12-31 23:59:59' 

ou

where '201012' = date_format(dob,'%Y%m') 
+0

date_format() était utile, merci –

+3

@ I-M-JM: Mais en utilisant DATE_FORMAT signifie qu'un index, s'il y en a un sur la colonne dob, ne peut pas être utilisé - pas bien. –

1
select * from users where dob >= '2010-12-01' and dob < '2011-01-01' 
+0

toute autre suggestion? –

+0

vous ne pouvez pas vraiment aller mieux alors. que cherchez-vous? –

Questions connexes