I have this data:
And, I am trying to compare that one of the date is within range of the given data, but without any success. Here is my query:
SELECT * FROM tbl_emp_leave_details WHERE emp_id = 81 AND leave_start_date >= '2019-09-03' AND leave_end_date <= '2019-09-03'
The type of both column is set to date.
Update:
$bindings = array(
":leave_start_date" => $switchDate,
":leave_end_date" => $switchDate,
":empId" => $row["EmployeeNamePK"]
);
$sqlValidation =
"SELECT * FROM tbl_emp_leave_details
WHERE emp_id = :empId
AND :leave_start_date >= leave_start_date
AND :leave_end_date <= leave_end_date";
Advertisement
Answer
Your are using wrong logic here. As per your requirement, your input date value should fall BETWEEN the leave_start_date and leave_end_date. So , switch your logic to other way around:
SELECT * FROM tbl_emp_leave_details WHERE emp_id = 81 AND '2019-09-03' BETWEEN leave_start_date AND leave_end_date
One can also write this query using >= and <= operators. Conceptually, the input date value should be greater than or equal to the leave_start_date. Also, for it to fall within the define range, it should be less than or equal to the leave_end_date:
SELECT * FROM tbl_emp_leave_details WHERE emp_id = 81 AND '2019-09-03' >= leave_start_date AND '2019-09-03' <= leave_end_date
