如何使用日期间隔从表中检索所有数据?
<?php
include '../php_action/db_connect.php';
$startdate = $_POST['startdate'];
$enddate = $_POST['enddate'];
echo 'ORDERS BETWEEN '.$startdate.' and '.$enddate;
$sql = "SELECT * from orders WHERE order_date BETWEEN '$startdate' AND '$enddate'" ;
$result=$connect->query($sql);
while($row=$result->fetch_array())
{
echo '<br>'. $row['order_id'] ;
}
?>
它不起作用,但是当我将其更改为 where order_id = 1; (例如)时,它会起作用。
我什至尝试 order_date = 2020/03/02; 仍然无法正常工作。
我应该如何解决?
答案 0 :(得分:1)
在引号内的sql语句后添加分号。
$sql = "SELECT * from orders WHERE order_date BETWEEN '$startdate' AND '$enddate';" ;
^^
如果这不能解决问题,则可能是许多问题。您可能将MySql设置为StrictDates。根据您的设置,您可能有严格的日期要求附加零。请参阅以下内容: https://dev.mysql.com/doc/refman/8.0/en/datetime.html
在对这些问题进行故障排除时,我尝试插入已知的良好数据,然后确定如何使这些数据通过。
尝试#1-尝试以下操作:更改为特定日期,并在引号内的结尾处添加分号:
$sql = "SELECT * from orders WHERE order_date BETWEEN '2020-01-01 10:10:10' AND '2020-03-01 10:10:10';" ;
如果可行,您可以删除时间以标识MySQL是否处于严格模式。这应该可以帮助您确定问题所在。