обычной MT-таблицы по диапазону времени (колонке timestamp внутренней) с конвертацией часового пояса. условно, время на сервере MSK, а выбрать нужно строки за сегодня в диапазоне времени 2:00 - 3:00 по IST. конвертацией дат сейчас заведует клиентский код на php, и он явно косячит: если часовой пояс восточнее часового пояса сервера, то "сегодняшний день" все равно отрезается по границе суток в часовом поясе сервера. короче, там где-то баг в php-коде, и я думаю, что конвертить часовой пояс нужно средствами кх в самом запросе. вопрос: как это делается?
У многих функций, которые работают с датой и временем, есть необязательный параметр timezone. У toDateTime, например.
то есть, что-то типа: SELECT ... WHERE toDateTime(timestamp, 'IST') BETWEEN ... ?
Ага Важно помнить, что TZ нужна как в группировке, так и в фильтрации Например SELECT toStartOfDay(timestamp, TZ) AS T FROM T WHERE timestamp BETWEEN start AND end При этом для фильтрации, фактически, вы используете unixtime который "двигаете" таймзоной SELECT toDateTime('2022-02-01 12:21:14', 'UTC') AS t1 , toDateTime('2022-02-01 12:21:14', 'Europe/Moscow') AS t2 , t1::UInt32 AS timestamp1 , t2::UInt32 AS timestamp2
Обсуждают сегодня