2012-02-10 75 views
2

我正在使用数据库来存储日志,并在列中保存了插入日期的“日期”。日期格式为“MM/DD/YY”。请任何人都可以建议我如何选择两个特定日期之间的数据。例如,我试过这个:在两个日期之间选择数据?

$from_date = "01/01/12"; 
$to_date = "02/11/12"; 

$result = mysql_query("SELECT * FROM logs WHERE date >= " . $from_date . " AND date <= " . $to_date . " ORDER by id DESC"); 

while($row = mysql_fetch_array($result)) { 
// display results here 
} 

但我猜这是行不通的,因为日期不是数字。谢谢您的帮助! :)

+0

它会工作。你必须使用'date'('')'参数或'date'$ param''或'str_to_date()'或'convert('$ param','%y /%m /%d')'。 ... – 2012-02-10 17:34:50

+0

您是否考虑过使用真正的日期列或将格式更改为'YY/MM/DD'? – 2012-02-10 18:01:28

回答

16

使用BETWEEN关键字:

"SELECT * FROM logs WHERE date BETWEEN '" . $from_date . "' AND '" . $to_date . "' 
ORDER by id DESC" 
+0

如果我不得不在两个日期之间找到两个日期..如SELECT * FROM日志WHERE date1和date2 BETWEEN'“。$ from_date。”'AND'“。$ to_date。”' @Sarfraz – 2016-05-17 05:19:11

0

你需要单引号添加到日期值'01/01/12' :

$from_date = "01/01/12"; 
$to_date = "02/11/12"; 

$result = mysql_query("SELECT * FROM logs WHERE date >= '" . $from_date . "' AND date <= '" . $to_date . "' ORDER by id DESC"); 
3

,就可以把领域日期然后在from_date和to_date之间选择

SELECT * FROM logs WHERE date STR_TO_DATE(date, '%m/%d/%Y') between STR_TO_DATE(from_date, '%m/%d/%Y') and STR_TO_DATE(to_date, '%m/%d/%Y') 
+0

感谢此:) – Tasos 2015-03-27 09:34:09

3

您的问题的答案取决于用于sto的数据类型请重新输入logs表中的date字段。

SQL(您的案例中的MySQL)完全可以比较日期。通常,使用BETWEEN .. AND ..运算符,但如果date的类型为CHAR(或VARCHAR),则该运算符将无法正常工作 - 在这种情况下,在比较之前,需要将date字段强制转换为DATETIME。

相关问题