У меня есть таблица «Встречи», которая содержит, помимо прочего, два поля даты и времени, помеченных как «начало» и «конец».У меня также есть дата по местному времени, которая конвертируется как диапазон полного дня в UTC (что и в таблице SQL хранит datetime).Мне нужно выбрать все (рабочие) времена между 00:00:00 и 08:00:00 UTC, которые также попадают в диапазон моего местного перевода времени.
Например, пользователь в PST (стандартное тихоокеанское время) выбирает 1 декабря 2018 года. Даты между 1 декабря в 00:00:00 и 2 декабря 00:00:00 конвертируются в UTC, что будет1 декабря с 08:00:00 до 2 декабря с 08:00:00.Мне нужно выбрать все встречи между 00:00:00 и 8:00:00 любого дня в предыдущем диапазоне (декабрь 1 - декабрь 2).
Все мои datetime / запросы имеют вид 'гггг-ММ-дд ЧЧ: мм: сс'.
Я знаю, что могу выбрать все времена между двумя довольно простовот так:
SELECT start, end
FROM appointment
WHERE start>='2018-12-01 00:00:00'
AND end<='2018-12-02 08:00:00'
Но я не уверен, как урезать их до рабочего времени.
Я ищу что-то вроде
SELECT start, end
FROM appointment
WHERE (start>='2018-12-01 00:00:00'
AND end<='2018-12-02 08:00:00')
AND (start.substring(11, start.end) >= '00:00:00'
AND end.substring(11, end.end) <= '08:00:00')
Где вызов вроде start.substring (11, start.end) вернул бы время в формате «ЧЧ: мм: сс»