按特定间隔日期选择数据库值,但无法正常工作

时间:2017-02-16 22:50:49

标签: php date datepicker datetimepicker between

HTML表单:

<form method="POST" action="configuration/raportare/generate_orhideea.php">
<input type="text" name="reportrangeTwo" class="pull-right" style="background: #fff; cursor: pointer; padding: 5px 10px; border: 1px solid #ccc; width: 100%"/><br>
<input type="submit" value="Generează raport">
</form>

表单有一个Jquery数据范围输入,允许我同时选择两个日期。

generate_orhideea.php文件,其中我使用explode()函数减去每个日期:

    //SOME CODE HERE
    // Create database variables
    require_once "../../configuration/db.php";
    $dates = $_POST['reportrangeTwo']; // E.g: 19-01-2017 | 17-02-2017
    $first_date = explode(" ", $dates);
    $begin = $first_date[0];
    $end = $first_date[2];

    $rows = mysqli_query($connection, "SELECT * FROM clienti_orhideea WHERE data_inregistrare between '$begin' and '$end' order by data_inregistrare asc");
    // loop over the rows, outputting them
while ($row = mysqli_fetch_assoc($rows)) fputcsv($output, $row);
?>

如果$dates = 17-02-2017 | 17-02-2017它将从今天返回所有值。

如果$dates = 16-02-2017 | 16-02-2017它将返回昨天的所有值。

如果$dates = 19-01-2017 | 17-02-2017它应该返回最后30天,但它会返回空白,因为我没有任何以19开头的日期。

但是,如果$dates = 11-02-2017 | 17-02-2017,它将返回我最近7天的所有值,包括14-01-2017的值。这是超过7天。

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

尝试将要比较的日期转换为适合MySQL的格式:

date

如果您有机会将日期存储为varchar数据类型(您应该始终使用datetime$rows = mysqli_query($connection, "SELECT * FROM clienti_orhideea WHERE STR_TO_DATE(data_inregistrare, '%d-%m-%Y') between STR_TO_DATE('$begin', '%d-%m-%Y') AND STR_TO_DATE('$end', '%d-%m-%Y') ORDER BY STR_TO_DATE(data_inregistrare, '%d-%m-%Y') ASC" ); 或MySQL中的任何其他日期/时间兼容数据类型),您可以试试这个:

<a href="#fr" onclick="language($id,"fr"); return true;">