база (сервер) в одном часовм поясе, а клиенты в другом.

Romantik

TeaM PHPClub
база (сервер) в одном часовм поясе, а клиенты в другом.

Приветствую.
Вот возникла ситуация когда основной посетитель из одного региона, а хостер в другом часовм поясе.
в базу дата ложиться как результат функции date()
Есть ли каки нибудь настройки базы на корректирвку даты к пример +2 часа.
конечно можно извратится добавив константу и все date() используя эту констатнту, но наверняка есть стандартные решения.
Кто сталкивался с подобным- раскажите пожалуйста.

Заранее благодарен.
 

vovik

Новичок
Стандартное решение в таком случае - класть в базу результат ф-ии gmdate().
 

Romantik

TeaM PHPClub
vovik
спасибо, я думал есть подобие SET CHARSET только для даты для Базы =)
 

vovik

Новичок
Такого нет :)

Дата хранится просто как дата, информацию из какого часового пояса она - надо хранить и обрабатывать вручную.

И стандартное решение - хранить все в GMT, а клиенту уже показывать с учетом его часового пояса. Особенно если клиенты могут быть из разных часовых поясов. У PHP и MySQL есть необходимые функции.
 

dadoc

Новичок
Вот тут вы немного заблуждаетесь. MySQL работает в часовом поясе устанавливаемом через переменную окружения TZ.
По умолчанию сервер работает в SYSTEM timezone.

SHOW VARIABLES LIKE 'TIME%' для справки

При этом все функции работы со временем учитывают этот самый временной пояс (UNIX_TIMESTAMP() например вренет вам в время в секундах с учетом вашего часового пояса)

В mysql 4.1.3+ для работы с часовыми поясами появилась функция CONVERT_TZ и вот демонстрация возможных коллизий:

SELECT UNIX_TIMESTAMP(CURDATE());


SELECT UNIX_TIMESTAMP(CONVERT_TZ(CURDATE(),'+00:00','SYSTEM'));


http://dev.mysql.com/doc/refman/4.1/en/time-zone-support.html

2Romantik:

Самое быстрое решение для вашей проблемы это
SET GLOBAL time_zone = timezone;
если у вас достаточно прав.
 
Сверху