У меня есть куча событий, хранящихся в моей базе данных. Каждое событие имеет время начала, которое хранится как DATETIME
в UTC. Каждый пользователь может выбрать свой часовой пояс.Как группировать по дате, составляя часовые пояса и DST?
Я хочу отобразить календарь, который показывает количество событий в каждый день месяца. Я не могу GROUP BY DATE(start_dt)
, потому что пользовательский день [обязательно] не начинается в 00:00:00 UTC. Кроме того, в часовом поясе пользователя может быть переключатель DST в середине месяца.
Является ли мой единственный выбор для получения каждого отдельного события за данный месяц, а затем группировки и подсчета их на моем серверном языке?
Изменение часового пояса на самом деле не повлияет на мои поля DATETIME? – mpen
К сожалению, это не будет. Из документа MySQL: «Текущий параметр часового пояса не влияет на значения, отображаемые такими функциями, как UTC_TIMESTAMP() или значениями в столбцах DATE, TIME или DATETIME. Также нет значений в этих типах данных, хранящихся в UTC, часовой пояс применяется для их только при преобразовании из значений TIMESTAMP. Если вы хотите, чтобы арифметика, специфичная для локали, для значений DATE, TIME или DATETIME, конвертировала их в UTC, выполняла арифметику, а затем конвертировала обратно ». –
нет! просто попробуйте 'SET @@ session.time_zone =" +03: 00 "; выберите сейчас() из двойного; 'Это не изменит ваши часы ... –