我正在使用数据库来存储日志,其中包含一个“date”列,用于保存插入日期。日期格式为“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 :(得分:16)
使用BETWEEN
关键字:
"SELECT * FROM logs WHERE date BETWEEN '" . $from_date . "' AND '" . $to_date . "'
ORDER by id DESC"
答案 1 :(得分: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')
答案 2 :(得分:3)
您的问题的答案取决于用于在date
表格中存储logs
字段的数据类型。
SQL(在您的情况下为MySQL)完全能够比较日期。通常,使用BETWEEN .. AND ..
运算符,但如果date
的类型为CHAR(或VARCHAR),则无法正常运行 - 在这种情况下,您需要将date
字段强制转换为比较之前的DATETIME。
答案 3 :(得分: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");
答案 4 :(得分:0)
将日期参数更改为Unix时间戳,然后进行比较。这是代码:
WinApiFuncW