MySQL选择日期范围问题

MySQL选择日期范围问题,mysql,Mysql,在sql查询中使用BETWEEN会得到一些奇怪的结果。想知道是否有人能帮助我理解为什么我会得到这些结果 我正在搜索dd/mm/yyyy格式的日期范围。所以我想选择某个日期范围内的所有条目 $dbSearchRecords_result = "SELECT * FROM $tbl_name WHERE Date BETWEEN '$DateFrom_order' AND '$DateTo_order'"; $dbSearchRecords_result = mysql_que

在sql查询中使用BETWEEN会得到一些奇怪的结果。想知道是否有人能帮助我理解为什么我会得到这些结果

我正在搜索dd/mm/yyyy格式的日期范围。所以我想选择某个日期范围内的所有条目

$dbSearchRecords_result = "SELECT * FROM $tbl_name WHERE Date BETWEEN '$DateFrom_order' AND '$DateTo_order'";

$dbSearchRecords_result = mysql_query($dbSearchRecords_result);
然后,我从数组调用while语句中的结果

while ($row = mysql_fetch_array($dbSearchRecords_result)){
现在,如果我在2011年2月12日至2011年2月14日之间搜索,则返回的日期为2010年12月13日

然而,如果我搜索2011年2月12日2012年2月13日,我不会得到2010年12月13日的结果

任何想法都将不胜感激


谢谢。

MySQL需要此格式的值来进行适当的比较:

YYYY-MM-DD
您可以使用将字符串转换为正确的格式


另外,显然,
Date
字段需要是
Date
DATETIME
类型。

尝试将值格式化为Date。。如

$dbSearchRecords_result = "SELECT * FROM $tbl_name WHERE Date BETWEEN DATE('$DateFrom_order') AND DATE('$DateTo_order')";

BETWEEN
运算符很可能将您的范围读取为字符串

为了在使用时获得最佳效果 对于日期或时间值,使用CAST() 将值显式转换为 所需的数据类型。示例:如果 将一个日期时间与两个日期时间进行比较 值,将日期值转换为 日期时间值。如果你使用字符串 常数,如a中的“2001-1-1” 比较日期,强制转换字符串 约会

因此,请尝试:

SELECT * FROM `mytable` 
WHERE `date` BETWEEN CAST('2011-01-02' AS DATE) AND CAST('2011-12-02' AS DATE)

您确定您的日期变量的格式是正确的日期吗?您是否检查过PHP生成的SQL语句是否符合您的预期?@KeenLearner。我才刚刚意识到我真是太傻了。我很确定这是主要问题。谢谢你,伙计。