У меня есть таблица со значениями дня / времени, которые разбиты на поля date и int соответственно, а не на одну дату / время. Каждая строка имеет уникальную комбинацию даты и часа, поэтому каждый день содержит 24 строки.
Моя задача - выбрать данные, релевантные для пользователей в другом часовом поясе, когда мне нужно учесть эти корректировки часового пояса в операторе where. Например, если пользователь на два часа опережает время сервера, оператор where должен его отражать:
...where concat(theDate,' ',theHour) > convert_tz(concat('2012-01-01',' ','00:00:00'), '-8:00', '-6:00')
.. скажем, для PST по центральному времени. Но, очевидно, я не могу использовать convert_tz или значение, с которым оно было вычислено в предложении where.
Я бы хотел использовать convert_tz, а не неуклюжий DATE_ADD или что-то еще. Что можно сделать?
Может быть, я ошибаюсь, и вы можете использовать convert_tz в предложении where. Вот основная проблема:
select *, convert_tz(concat(theDay,' ',theHour), '-8:00', '-8:00') 'dayTZ'
from stats
where convert_tz(concat(theDay,' ',theHour), '-8:00', '-8:00') > '2011-01-25 05:00:00';
Вышеуказанные значения часов по-прежнему возвращаются раньше, чем 5.