Поиск между двумя датами с определенным временем с каждой датой - PullRequest
8 голосов
/ 19 апреля 2019

У меня две даты.2019-01-01(fromDate) и 2019-01-10(toDate).И теперь я хочу искать только время от 13:00 до 16:00 каждой даты.Могу ли я спросить, возможно ли использовать только запрос?Любой ответ высоко ценится

SELECT * 
FROM table 
WHERE fromDate >= 2019-01-01 AND toDate <= 2019-01-10

Ответы [ 2 ]

5 голосов
/ 19 апреля 2019

Вы можете попробовать использовать функцию STR_TO_DATE с форматом и функцией HOUR.

SELECT * 
FROM table 
WHERE 
    fromDate >= STR_TO_DATE('2019-01-01', '%Y-%m-%d') 
AND 
    toDate <= STR_TO_DATE('2019-01-10', '%Y-%m-%d')
AND
    (HOUR(fromDate) BETWEEN 13 AND 16 OR HOUR(toDate) BETWEEN 13 AND 16)
3 голосов
/ 19 апреля 2019

Используйте отдельные условия для даты и времени:

SELECT * 
FROM table 
WHERE fromDate >= '2019-01-01' AND
      toDate < '2019-01-11' and
      time(fromdate) between '13:00:00' and '16:00:00' and
      time(todate) between '13:00:00' and '16:00:00;

Или, если вы не хотите точно 16:00:00, вы можете использовать hour():

SELECT * 
FROM table 
WHERE fromDate >= '2019-01-01' AND
      toDate < '2019-01-11' and
      hour(fromdate) in (13, 14, 15) and
      hour(todate) in (13, 14, 15)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...