Select data between two dates?

后端 未结 5 396
灰色年华
灰色年华 2020-12-06 08:46

I\'m using a database to store logs, with a column \"date\" which holds the date it was inserted. The format of the date is \"MM/DD/YY\". Please can anyone suggest how I wou

相关标签:
5条回答
  • 2020-12-06 08:55

    Change date parameters into Unix timestamps and then compare them. Here is the code:

    $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
    }
    
    0 讨论(0)
  • 2020-12-06 09:06

    The answer to your question depends on the data type that is used to store the date field in the logs table.

    SQL (MySQL in your case) is fully capable of comparing dates. Usually, the BETWEEN .. AND .. operator is used but that will not work correctly if the type of date is CHAR (or VARCHAR) - in which case you will need to cast the date field to a DATETIME before comparing.

    0 讨论(0)
  • 2020-12-06 09:11

    You can cast the fields as dates and then select between from_date and 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 讨论(0)
  • 2020-12-06 09:19

    You need to add single quotes to the date values '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");
    
    0 讨论(0)
  • 2020-12-06 09:21

    Use the BETWEEN keyword:

    "SELECT * FROM logs WHERE date BETWEEN '" . $from_date . "' AND  '" . $to_date . "'
    ORDER by id DESC"
    
    0 讨论(0)
提交回复
热议问题