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
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
}
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.
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')
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");
Use the BETWEEN
keyword:
"SELECT * FROM logs WHERE date BETWEEN '" . $from_date . "' AND '" . $to_date . "'
ORDER by id DESC"