2010-12-10 29 views
3

ich eine Tabelle mit folgenden Feldern habenMySQL-Abfrage für Monat Jahr

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

Jetzt brauche ich eine Abfrage, Monat und Jahr zur gleichen Zeit

Was bieten kann ich jetzt bin mit ist

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

Ich möchte nicht monate() und year() verwenden, kann es in Einzel Sache gemacht werden?

Hilfe geschätzt

Dank

Antwort

5

Es kann ausgedrückt werden, wie Sie verlangen, aber ich glaube es nicht mehr effizient wäre.

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

oder

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

date_format() war nützlich, danke –

+3

@ I-M-JM: Aber die Verwendung von DATE_FORMAT bedeutet, dass ein Index, wenn es einen auf der dob -Spalte gibt, nicht verwendet werden konnte - nicht gut. –

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

anderer Vorschlag? –

+0

kann man nicht wirklich besser als das. Wonach suchen Sie? –

Verwandte Themen