【问题标题】:Select data between two dates?选择两个日期之间的数据?
【发布时间】:2012-03-03 04:17:10
【问题描述】:

我正在使用数据库来存储日志,其中的“日期”列保存了插入的日期。日期格式为“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
}

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

【问题讨论】:

  • 它会起作用的。你必须把你的参数放到date('')或者date '$param'或者str_to_date()或者convert('$param','%y/%m/%d')....
  • 您是否考虑过使用真实的日期列或将格式更改为YY/MM/DD

标签: php mysql select date


【解决方案1】:

使用BETWEEN 关键字:

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

【讨论】:

  • 如果我必须在两个日期之间找到两个日期.. 比如 SELECT * FROM logs WHERE date1 AND date2 BETWEEN '" . $from_date . "' AND '" . $to_date . "' @Sarfraz
【解决方案2】:

您可以将字段转换为日期,然后在 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')

【讨论】:

    【解决方案3】:

    您的问题的答案取决于用于在logs 表中存储date 字段的数据类型。

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

    【讨论】:

      【解决方案4】:

      您需要将单引号添加到日期值“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");
      

      【讨论】:

        【解决方案5】:

        将日期参数更改为 Unix 时间戳,然后进行比较。代码如下:

        $from_date = "2019/01/12";
        $to_date = "2019/01/15";
        
        $from_date_unix = strtotime($from_date);
        $to_date_unix = strtotime($to_date);    
        
        $result = mysql_query("SELECT * FROM logs WHERE date >= " . $from_date_unix . " AND date <= " . $to_date_unix . " ORDER by id DESC");
        while($row = mysql_fetch_array($result)) {
        // display results here
        }
        

        【讨论】:

          猜你喜欢
          • 2012-10-31
          • 1970-01-01
          • 1970-01-01
          • 2015-07-10
          • 2012-12-21
          • 2020-04-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多