2014-06-23 120 views
0

我想拉两个日期之间的所有bday成员 - 不管年份..只是与月和日..我得到正确检索的结果,但没有按我期望的顺序...顺序不按预期工作

我会需要逐月按月升序排列的记录 - 这样一个月内的成员会按升序进行分组..(我把它按月分组,但不是按天分组)

查询:

SELECT * 
    FROM family_member 
    WHERE DATE_FORMAT(dob, '%m-%d') 
      BETWEEN DATE_FORMAT('2013-07-1', '%m-%d') 
      AND DATE_FORMAT('2013-09-30', '%m-%d') 
    order by MONTH(dob) 
      ,DAYOFMONTH(dob) 
      and status='a' 
+0

您使用哪种DBMS? –

+0

它看起来像MySQL,但为什么不只是由没有月份和日期一个月的dob命令? – Jester

+0

按月份而不是年份可能 –

回答

3

我认为你需要TA柯列于order byand

SELECT * FROM family_member 
    WHERE DATE_FORMAT(dob, '%m-%d') BETWEEN DATE_FORMAT('2013-07-1', '%m-%d') AND DATE_FORMAT('2013-09-30', '%m-%d') 
    order by MONTH(dob), DAYOFMONTH(dob), status='a' 

由于写的,它是由MONTH(dob)订货,然后是AND布尔结果荷兰国际集团DAYOFMONTH(dob)status='a'

要么或你在中间插入order by您的where子句:

SELECT * FROM family_member 
    WHERE DATE_FORMAT(dob, '%m-%d') BETWEEN DATE_FORMAT('2013-07-1', '%m-%d') AND DATE_FORMAT('2013-09-30', '%m-%d') 
    and status = 'a' 
    order by MONTH(dob), DAYOFMONTH(dob)