【问题标题】:sql query working only at timessql查询有时只工作
【发布时间】:2014-04-30 17:57:14
【问题描述】:

我需要你的帮助 无论年份如何,我都需要在两个日期之间拉生日 我使用以下查询

 $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 日

它适用于某些场景。你能告诉我我需要纠正的问题吗

【问题讨论】:

  • 能不能把family_member表的数据放进去

标签: sql


【解决方案1】:

这是因为 9 月是第 9 个月,“09”和“9”不是同一个字符串。使用%m 而不是%c

编辑

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

【讨论】:

  • 谢谢,这行得通...但是请您帮我理解 %m 和 %c 之间的区别...谢谢!
  • %m-月,数字 (00-12)。由于 09 落在这个范围之间,所以他使用了这个
  • 一月份,%c="1" 和 %m="01"。
猜你喜欢
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 2010-10-16
  • 1970-01-01
  • 2013-07-30
  • 2023-03-20
相关资源
最近更新 更多