MySQL запрос для выбора ближайшего времени из 12-часового формата времени - PullRequest
0 голосов
/ 06 февраля 2020

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

Таблица:

id  date        time
1   2018-02-06  09:00 pm
2   2018-02-05  09:30 pm
3   2018-02-06  09:00 am
4   2018-02-07  10:00 am

Контрольный пример 1:

SELECT *
FROM `table`
WHERE `date` = '2018-02-06'
AND `time` >= '08:16 am'
ORDER BY `time` ASC
LIMIT 1

Ожидаемый результат:

id  date        time
3   2018-02-06  09:00 am

Контрольный пример 2:

SELECT *
FROM `table`
WHERE `date` = '2018-02-06'
AND `time` >= '08:16 pm'
ORDER BY `time` ASC
LIMIT 1

Ожидаемый результат:

id  date        time
1   2018-02-06  09:00 pm

1 Ответ

1 голос
/ 06 февраля 2020

Сравнение даты и времени по отдельности - боль внизу. Я бы предложил хранить дату и время в виде одного столбца datetime. Сказав это, вы всегда можете конвертировать строки в дату и время, используя STR_TO_DATE:

select *
from t
where str_to_date(CONCAT(date, ' ', time), '%Y-%m-%d %h:%i %p') >= '2018-02-06 08:16' -- <- proper date
order by str_to_date(CONCAT(date, ' ', time), '%Y-%m-%d %h:%i %p')
limit 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...