MySQL « К дате в формате datetime прибавить 3 часа?
Запутался немного
Скрипт обрабатывает некие данные и для каждой записи для столбца DateE типа datetime вставляет дату .date("Y-m-d H:i:s") таким образом.
Данные получаются в часовой зоне Москвы(+3). Но у нас другой часовой пояс. Вопрос - как сделать "корректировку" при вставке или при выводе потом уже.
Вывод - значение DateE выводится.
1 ответов
Раз у Вас пользователи находятся в разных часовых поясах, используйте для хранения даты-времени тип TIMESTAMP - 4-байтное целое число, равное количеству секунд, прошедших с полуночи 1 января 1970 года по усреднённому времени Гринвича (т.е. нулевой часовой пояс, точка отсчёта часовых поясов).
При получении из базы он отображается с учётом часового пояса - достаточно правильно передать значение session.time_zone для соединения с базой.
Данный пример выведет на экран 2013-09-12 06:00:00, хотя добавляли 2013-09-12 09:00:00
$q = "INSERT INTO Test (DT) VALUES ('2013-09-12 09:00:00')";
if (!mysql_query($q))
echo ($q);
mysql_query("SET @@session.time_zone='+00:00'",$conn);
$q = "SELECT DT FROM Test";
$res = mysql_query($q);
if ($res) {
$row = mysql_fetch_assoc($res);
echo ($row['DT']);
}
else
echo ($q);
имхо коррекцию времени лучше делать при выборке, так можно делать под разные часовые пояса, а запрос примерно такого вида