Не удается запустить Select WPDB для получения значений между 2 диапазонами дат

#php #mysql #wordpress

Вопрос:

Я пытаюсь получить строки из пользовательской таблицы, которую я создал в своей базе данных wp.

Я пытаюсь получить все записи, в которых их значение времени, созданное по дате, находится в диапазоне дат. Это часть функции, которую я создаю

 global $wpdb;
        $start_date = '2021-07-04';
        $end_date = '2021-10-04';
        $table_name = 'statistics_revenues';
        $query = $wpdb->prepare("SELECT * FROM {$wpdb->prefix}$table_name WHERE DATE(date_created) BETWEEN ($start_date AND $end_date)", ARRAY_A);
        $query_results = $wpdb->get_results($query, ARRAY_A);
 

когда я просто запускаю запрос select без условий, все работает, но
как только я добавляю часть из «ГДЕ ДАТА(дата создания)….», запрос не получает необходимых результатов.

Где я ошибся?

Комментарии:

1. У вас есть $start_date = '2021-07-04' , как только вы вставляете его в свой запрос, вы теряете кавычки, что делает его математическим выражением 2021-07-04 (которое равно 2010 ). Это, вероятно, одна из причин. (То же самое с $end_date )

Ответ №1:

Удалите скобки между просто напишите BETWEEN $start_date AND $end_date

Ответ №2:

Основная причина ошибки на самом деле заключалась в том, что я не понимал метод wpdb->подготовка.

В основном он работает как sprintf, и я использовал его по-другому. в любом случае, всем спасибо 🙂