MySQL选择日期范围问题
在sql查询中使用BETWEEN会得到一些奇怪的结果。想知道是否有人能帮助我理解为什么我会得到这些结果 我正在搜索dd/mm/yyyy格式的日期范围。所以我想选择某个日期范围内的所有条目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
$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。我才刚刚意识到我真是太傻了。我很确定这是主要问题。谢谢你,伙计。