Поле даты в таблицах базы данных, над которыми я сейчас работаю, находится в форме varchar и дано в формате dd.mm.yyyy.
Например дата: 03.02.2018
Существует экран выше
Поэтому, когда я отправляю данные с помощью ajax, вы работаете неправильно.
Есть код ниже
function clean($data) {
global $con;
$data = mysqli_real_escape_string($con, strip_tags($data));
return $data;
}
$start_date = clean($_POST['start']);
$end_date = clean($_POST['end']);
if (isset($start_date) && isset($end_date)) {
$get_date = "SELECT * FROM records WHERE reservations BETWEEN '$start_date' AND '$end_date' ";
}
Дата начала и дата окончания такие же, например, сегодня или вчера. Но когда даты разные, не работают, например, дата начала: 03.02.2018 дата окончания: 03.03.2018
С уважением
Спасибо.
Вы решите эту проблему и другие проблемы в будущем, если вы используете тип столбца DATE
а не varchar. Это позволит использовать функции даты в MySQL.
Если по какой-то причине вы не можете или не хотите, чтобы вам нужно было преобразовать столбец в дату, прежде чем делать BETWEEN
:
SELECT * FROM records
WHERE STR_TO_DATE(reservations,'%d.%m.%Y')
BETWEEN '$start_date' AND '$end_date';--Don't use variables directly
Кроме того, вы не хотите использовать исходные данные в запросе базы данных. Злоумышленник может отправить SQL в вашу базу данных и нанести урон.
Лучше использовать экранирование или даже лучше настраивать пользовательские запросы. На этом сайте есть вопросы, которые могут помочь в этом.
В вашем SQL-запросе используется таблица "резервирование", но на изображениях вы используете "rezervasyon_tarihi". Возможно, это должно быть "SELECT * FROM records WHERE rezervasyon_tarihi BETWEEN '$ start_date' AND '$ end_date'";
И поэтому, я думаю, эта тема поможет вам SQL Между предложением со строками столбцов
date
в базе данных, не так ли? MySQL хранит даты в формате:YYYY-MM-DD
.BETWEEN
для типа столбцаvarchar
в MySQL, вам нужен обходной путь.