2017-02-16 2 views
0

Я пытаюсь изменить оператор select для учетной записи для локального часового пояса пользователей, но я не могу обернуть его вокруг.MySQL Select Statement with convert_tz

Предполагается выбрать любые записи с текущего дня в часовом поясе пользователей, в этом случае он будет жестко закодирован до 4 часов.

В настоящее время я использую ...

SELECT * FROM {$this->burnsTable} WHERE DATE(created) = DATE(NOW() - INTERVAL 4 HOUR) 

Я хочу изменить это заявление, чтобы использовать convert_tz, это возможно?

ответ

1

MySQL не будет знать ничего о часовых поясах ваших пользователей. Вам нужно будет get it с javascript или потенциально PHP, хотя лучше всего просто попросить пользователя выбрать его. В этом случае вы можете store their choice in the database, а затем MySQL может знать свой часовой пояс. Затем вы можете использовать convert_tz (или просто заполнить смещение, которое вы даете вашему вызову ADDTIME). Если вы создали свою базу данных с time zone strings, то вы можете сохранить их и использовать их с convert_tz, или вы все еще можете использовать convert_tz с смещениями, делая что-то вроде

SELECT * FROM {$this->burnsTable} WHERE DATE(CONVERT_TZ(created,'+00:00','+4:00')) = CURDATE(); 

Вы можете присоединиться к таблице пользователей, чтобы сделать это, но вместо того, чтобы делать то, что потенциально может быть много запросов, было бы лучше иметь часовой пояс, сохраненный в вашей модели пользователя PHP, а затем просто передать соответствующее смещение, а не искать его каждый раз.

+0

Извините, я не сделал эту часть прозрачной, я *** знаю *** их часовой пояс. Это больше касалось возможности выбора записи с текущей даты в отношении их собственного часового пояса. Это похоже на то, что мне нужно. – bc2946088