大家好.我在我的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);
Run Code Online (Sandbox Code Playgroud)
然后我在一个数组的while语句中调用结果
while ($row = mysql_fetch_array($dbSearchRecords_result)){
Run Code Online (Sandbox Code Playgroud)
现在如果我搜索BETWEEN 12/02/2011 14/02/2011,那么从2010年12月13日起返回日期.
然而,如果我搜索12/02/2011 13/02/201我没有得到13/12/2010的结果.
任何想法都将非常感激.
干杯.
该BETWEEN运营商是最有可能您的阅读范围为字符串.从书中:
为了在将BETWEEN与日期或时间值一起使用时获得最佳结果,请使用CAST()将值显式转换为所需的数据类型.示例:如果将DATETIME与两个DATE值进行比较,请将DATE值转换为DATETIME值.如果在与DATE的比较中使用字符串常量(如"2001-1-1"),则将字符串强制转换为DATE.
所以,试试:
SELECT * FROM `mytable`
WHERE `date` BETWEEN CAST('2011-01-02' AS DATE) AND CAST('2011-12-02' AS DATE)
Run Code Online (Sandbox Code Playgroud)
MySQL需要这种格式的值来进行适当的比较:
YYYY-MM-DD
Run Code Online (Sandbox Code Playgroud)
您可以使用STR_TO_DATE将字符串转换为正确的格式.
显然,该Date领域需要属于DATE或DATETIME类型.
| 归档时间: |
|
| 查看次数: |
7924 次 |
| 最近记录: |