Выбрать все данные из таблицы Где дата в этот понедельник

У меня есть поля даты в базе данных, которые имеют день записи. Поля starttime а также stoptime, которые определяют их график

На сегодняшний день размещения время начала 2018-12-17 00:00:00 и время остановки 2018-12-17 11:59:59

Пример времени запуска:

2018-12-17 15:30:00,
2018-12-24 06:00:00,
2018-12-17 10:00:00,
2018-12-17 09:00:00

и время остановки (в том же порядке)

2018-12-17 16:00:00,
2018-12-24 07:00:00,
2018-12-17 12:30:00,
2018-12-17 10:30:00

это покажет только 2018-12-17 09:00:00/2018-12-17 10:30:00

или все остальное, кроме 1 выше, если я включаю операцию, входит в оператор if.

$starttime = date("Y-m-d H:i:s", strtotime('last monday', strtotime('next sunday')));

$stoptime = strtotime(date("Y-m-d H:i:s", strtotime($starttime))) + 43199;

$stoptime = date("Y-m-d H:i:s", $stoptime);
$stmt2 = $db->prepare("SELECT * FROM schedule WHERE day = :day");
$stmt2->execute(array(':day' => "Monday"));
while($row2 = $stmt2->fetch()){
if($row2['starttime'] >= $starttime AND $row2['stoptime'] <= $stoptime){
//data gets displayed here.
}
}

0

Решение

Похоже, у вас неверно истолкованы дата / время. Из того, что вы поставляете из 43199, это 1 секунда МЕНЬШЕ, затем 12 ЧАСОВ, а не 24 часа в сутки. Так что вы получаете те записи, которые до 12 часов дня вместо 12 часов утра. На 24-часовых часах вы будете на 86,400 в течение 24 часов … или 86,399 на 1 секунду меньше.

Кроме того, вы можете обновить свой запрос, чтобы просто заботиться о времени начала, как в любое время в пределах начальной даты, о которой идет речь. Если время окончания переносится на следующую дату, я уверен, что вы хотите это и в наборе результатов.

SELECT *
FROM schedule
WHERE startTime >= '2018-12-17'
and starttime < date_add( '2018-12-17', interval 7 days)

Теперь я делаю МЕНЬШЕ, чем 7 дней в приведенном выше примере. Итак, давайте посмотрим на это .. Дата / время начала «2017-12-17» подразумевается в час: мин 00:00 в полночь. Делая МЕНЬШЕ, чем 7 дней, он охватывает всю неделю до 23:59:59 (или 24-часовые часы 23:59:59) в следующее воскресенье. Так что все будет МЕНЬШЕ, чем понедельник следующей недели. Тогда вам не нужно беспокоиться о форматировании ваших конкретных строк в запросе, а затем о тестировании. Просто получите результаты и уходите.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector