#php #mysql #sql #datetime #where-clause
#php #mysql #sql #datetime #где-предложение
Вопрос:
Я делаю грубый планировщик встреч для развлечения.
У меня есть страница, на которой будут отображаться доступные встречи.
Я хочу отображать только назначение, которое истекло через 30 дней, иначе месяц и не забронировано, иначе user_id = 0.
У забронированных встреч есть идентификатор пользователя, связанный с их учетной записью.
Я застрял на том, как сообщить MySQL отображать назначение только с датами, которые находятся между сегодняшним днем и месяцем с сегодняшнего дня.
Страница использует PHP и MySQL с использованием PDO.
Мне больше всего нравится PDO, поэтому я его использую.
То, что я рассмотрел, — это DATE_ADD(), CURDATE() ИНТЕРВАЛ, а также то, что у меня есть на странице
<?php
//opens database path
$db = new PDO(DB_PATH, DB_LOGIN, DB_PW);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$today = array(date(Y), date(m), date(d));
$result = $db->query("
SELECT *
FROM appt
WHERE DAY(date) < $today[3]
AND MONTH(date)=today[2] 1
ORDER
BY date DESC
, time DESC
");
foreach($result as $row)
{
print "<tr>";
print "<td><input type='checkbox' name='id[]' value=".$row['id']."></td>";
print "<td>".$row['date']."</td>";
print "<td>".$row['time']."</td>";
print "<td>".$row['doctor']."</td>";
print "</tr>";
}
?>
База данных будет создана как таковая
CREATE TABLE appts
(key int unsigned not null auto_increment primary key
, user_id int unsigned
, date date
, time time
, doctor tinytext);
Комментарии:
1. Рассмотрите возможность хранения даты и времени как единого объекта
2. И посмотрите о внедрении sql и важности подготовленных и связанных запросов
3. @Strawberry Почему это было бы лучше?
Ответ №1:
как сообщить MySQL отображать назначение только с датами, которые находятся между сегодняшним днем и месяцем с сегодняшнего дня?
Вы можете использовать арифметику даты MySQL. Я думаю, вы хотите:
SELECT *
FROM appt
WHERE date >= current_date - interval 1 month
AND date < current_date interval 1 day
ORDER BY date DESC, time DESC
Комментарии:
1. current_date — это функция или переменная, определенная ранее?
2. @user3831093: это встроенная функция MySQL, которая возвращает текущую дату (без учета времени): dev.mysql.com/doc/refman/8.0/en /…