Количество записей между двумя датами и временем

0

Это дает мне эту ошибку при запуске скрипта: вызов функции-члена fetch_assoc() на boolean. Это сводит меня с ума.

Я получаю данные из окна ввода следующим образом: 2017-12-14 06:42:10

$sql = "SELECT count(*) as total FROM 'purchase' where purchase_datetime BETWEEN str_to_date($date1, 'Y-m-d H:i:s') and str_to_date($date2, 'Y-m-d H:i:s')";

или же

$sql = "SELECT count(*) as total FROM 'purchase' where purchase_datetime BETWEEN '$date1' and '$date2'";  

или же
Попытка:

$date1 = date('Y-m-d H:i:s', $date1);
$date2 = date('Y-m-d H:i:s', $date2);  

ПОЛНЫЙ КОД:

            <?php
            if (isset($_POST['submit']) && isset($_POST['date1']) && isset($_POST['date2'])) {
                $date1 = $_POST['date1'];
                $date2 = $_POST['date2'];

                $date1 = date('Y-m-d H:i:s', $date1);
                $date2 = date('Y-m-d H:i:s', $date2);


                $sql = "SELECT count(*) as total FROM 'purchase' where purchase_datetime BETWEEN '$date1' and '$date2'";
                $query_result = $conn->query($sql);
                $rows = $query_result->fetch_assoc();
                echo "Result is: " . $rows['total'] . " purchases";
            }
            ?>
Теги:
datetime

2 ответа

0

убедитесь, что ваш формат:

$date1=$_POST['date1']//1496620800;
$date2=$_POST['date2']//1496707200;
$date1 = date('Y-m-d', $date1);//2017-06-05
$date2 = date('Y-m-d', $date2);//2017-06-06

Формат buy_datetime: 2017-xx-xx

0

Функция date предназначена для форматирования сегодняшней даты, а не заданной даты. Используйте функцию DateTime::format для форматирования заданной даты. Попробуй это:

$date1 = $date1->format('Y-m-d H:i:s');
$date2 = $date2->format('Y-m-d H:i:s');
$sql = "SELECT COUNT(*) AS total FROM purchase WHERE purchase_datetime BETWEEN '$date1' AND '$date2';";

Кроме того, вы можете использовать date_format псевдонима date_format следующим образом:

$date1 = date_format($date1, 'Y-m-d H:i:s');
$date2 = date_format($date2, 'Y-m-d H:i:s');
$sql = "SELECT COUNT(*) AS total FROM purchase WHERE purchase_datetime BETWEEN '$date1' AND '$date2';";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню