我正在以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)){
现在,如果我搜索BETWEEN 12/02/2011 14/02/2011,则会有一个从2010年12月13日返回的日期。
然而,如果我搜索12/02/2011 13/02/201我没有得到13/12/2010的结果。
任何想法都会受到最高的赞赏。
干杯。
答案 0 :(得分:7)
BETWEEN
运算符最有可能将字符串作为字符串读取。 From the book:
使用BETWEEN时获得最佳效果 使用日期或时间值,使用CAST() 显式地将值转换为 所需的数据类型。示例:如果 你将DATETIME与两个DATE进行比较 值,将DATE值转换为 DATETIME值。如果你使用字符串 例如'2001-1-1'中的常数 与DATE比较,强制转换字符串 到了日期。
所以,试试:
SELECT * FROM `mytable`
WHERE `date` BETWEEN CAST('2011-01-02' AS DATE) AND CAST('2011-12-02' AS DATE)
答案 1 :(得分:5)
答案 2 :(得分:1)
尝试将值格式化为DATE ..,如
$dbSearchRecords_result = "SELECT * FROM $tbl_name WHERE Date BETWEEN DATE('$DateFrom_order') AND DATE('$DateTo_order')";