sql查询有时只能工作

时间:2014-04-30 17:57:15

标签: sql

我需要你的帮助 我需要在两个日期之间拉生日而不管年份 我使用以下查询

 $sql = "SELECT * FROM family_member WHERE DATE_FORMAT(dob, '%c-%d') BETWEEN DATE_FORMAT('2013-".$from_month."-".$from_day."', '%c-%d')  AND DATE_FORMAT('2013-".$to_month."-".$to_day."', '%c-%d') order by MONTH(dob), DAYOFMONTH(dob)";

如果我给出的话,查询效果很好 - 开始日期为11月6日& - 截止日期为12月13日

但是如果我给出,查询返回零记录 - 开始日期为9月6日& - 截止日期为12月13日

它适用于某些情况。你能否告诉我需要纠正的问题

1 个答案:

答案 0 :(得分:2)

这是因为9月是第9个月," 09"和" 9"字符串不一样。使用%m代替%c

修改

根据要求提供的一些解释:对于9月到12月的月份范围,您的比较范围是9-0612-06。现在记住,这是一个字符串比较,例如10-25不大于9-06,这意味着BETWEEN子句不会产生任何有意义的结果。如果您选择2位数月份,则最终会将09-0610-25进行比较,这会按预期进行。