选择两个日期之间的数据?

时间:2012-02-10 17:31:44

标签: php mysql select date

我正在使用数据库来存储日志,其中包含一个“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
}

但我想这不起作用,因为日期不是数字。谢谢您的帮助! :)

5 个答案:

答案 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