Как я могу все еще получить данные между двумя Datetime на основе вашей текущей даты? - PullRequest
1 голос
/ 31 марта 2020

Итак, у меня есть данные в моей базе данных, которые выглядят следующим образом.

id | value|  current_date |            time           | group
1      0      2020-03-30        2020-03-30 19:00:00       2
2      5      2020-03-30        2020-03-30 20:00:00       2
3      10     2020-03-30        2020-03-30 21:00:00       2 
4      5      2020-03-30        2020-03-30 22:00:00       2
5      5      2020-03-30        2020-03-30 23:00:00       2
6      5      2020-03-30        2020-03-31 00:00:00       2
7      5      2020-03-30        2020-03-31 01:00:00       2
8      5      2020-03-30        2020-03-31 02:00:00       2
9      5      2020-03-30        2020-03-31 03:00:00       2
10     5      2020-03-30        2020-03-31 04:00:00       2
11     5      2020-03-30        2020-03-31 05:00:00       2
12     5      2020-03-30        2020-03-31 06:00:00       2
13     5      2020-03-30        2020-03-31 07:00:00       2
14     5      2020-03-30        2020-03-31 08:00:00       2
15     5      2020-03-30        2020-03-31 09:00:00       2
16     5      2020-03-30        2020-03-31 10:00:00       2
17     5      2020-03-30        2020-03-31 11:00:00       2

Моя цель - получить все данные в период с 7:00 до 12:00.

В моем коде php я передаю параметр, который является current_date (предположим, что сегодня 30 марта) для этого дня. Так что я могу поместить его в мое предложение where в моем запросе к базе данных.

$shift_date = '';

$shift_date = ($shift_date != '') ?
            DateTime::createFromFormat('m-d-Y', $shift_date, new DateTimeZone('Asia/Manila')) :
            DateTime::createFromFormat('Y-m-d', date("Y-m-d"), new DateTimeZone('Asia/Manila'));

$current_hour = DateTime::createFromFormat('Y-m-d H:i:s', $shift_date->format('Y-m-d') .' 19:00:00', new DateTimeZone('Asia/Manila')); 

//2020-03-30 19:00:00

И это мой запрос, с этим запросом у меня нет проблем с получением данных, потому что это все еще 30 марта.

SELECT value,time,current_date,group
FROM table
WHERE time >='2020-03-30 19:00:00' AND time <= DATE_ADD("2020-03-30 19:00:00", INTERVAL 16 HOUR)
AND group = 2;

Дилемма, с которой я столкнулся, заключается в том, что если дата достигнет 2020-03-31 :00:00:00, тогда эта строка кода в моем php будет иметь значение 2020-03-31: 19:00:00, тогда я не получу данные, которые я хочу.

$shift_date = '';

$shift_date = ($shift_date != '') ?
            DateTime::createFromFormat('m-d-Y', $shift_date, new DateTimeZone('Asia/Manila')) :
            DateTime::createFromFormat('Y-m-d', date("Y-m-d"), new DateTimeZone('Asia/Manila'));

$current_hour = DateTime::createFromFormat('Y-m-d H:i:s', $shift_date->format('Y-m-d') .' 19:00:00', new DateTimeZone('Asia/Manila')); 

//2020-03-31 19:00:00

Я все еще должен получить необходимые мне данные с 30 марта 19:00 до 31 марта 11 часов. Я действительно застрял с этой проблемой, которая у меня есть. Спасибо за всю предварительную помощь, которая даст мне время, чтобы помочь мне в этом.

1 Ответ

0 голосов
/ 31 марта 2020

Привет, я знаю, что мой вопрос действительно сбивает с толку, но я уже решил его.

время окончания всегда 11 вечера, поэтому мне просто нужно -12 часов, чтобы я мог получить всю базу данных на current_date в моей базе данных;

$shift_date = date_create(date("Y-m-d"));
$shift_date->modify("-12 hours");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...