如何根据日期间隔从表中选择数据?

时间:2020-03-03 01:11:01

标签: php sql

如何使用日期间隔从表中检索所有数据?

这是我的代码

<?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; 仍然无法正常工作。

我应该如何解决?

1 个答案:

答案 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是否处于严格模式。这应该可以帮助您确定问题所在。

相关问题