Время от базы данных, часовой пояс и полночь - PullRequest
0 голосов
/ 13 декабря 2011

В моей базе данных mysql есть несколько событий с типичным форматом даты, таким как YYYY-MM-DD и временем 00:00:00.Мой запрос SELECT выглядит как

$STH_1 = $DBH->query("SELECT table_name                        
                         FROM information_schema.tables                        
                        WHERE table_name                        
                         LIKE 'v_c_ei\_9%'"); 
$stmts_1 = array();

foreach($STH_1 as $row_1) { 

$stmts_1[] = sprintf("SELECT *
                      FROM %s 
                     WHERE date='%s'", $row_1['table_name'], $date); 

}

$stmt_1 = implode("\nUNION\n", $stmts_1);  
$stmt_1 .= "\nORDER BY time ASC";  

$STH_5_2 = $DBH->query($stmt_1);

Переменная даты имеет типичный формат даты, например, ГГГГ-ММ-ДД.

F.ex.у нас есть событие с ДАТА и время 23:30:00 (в dbase все время UTC).И у меня есть один пользователь из другого часового пояса (например, + 1,00).Для него система должна отображать событие не с DATE и временем 23:30:00, а с DATE + 1 и временем 00:30:00.Но в этот момент система отображает это событие с датой и временем 00:30:00 (изменяется только время, а не дата) - возможно, время меняется после этой основной базы данных SELECT.

Все полученные события впоказ должен быть только с одной ДАТЫ со временем от 00:00:00 до 23: 59: 59.

Что я должен изменить (возможно, в основном запросе SELECT), чтобы получить правильную дату и время с корреляцией с пользовательским временемZone

1 Ответ

0 голосов
/ 14 декабря 2011

Поскольку детали, которые вы описываете, относятся к пользовательской логике, в идеале вы хотите оставить это форматирование как можно позже.Как правило, рекомендуется обрабатывать даты UTC в вашей базе данных и в логике приложения и форматировать их только при отображении пользователю.

Рассматривали ли вы использование объекта DateTime ?Вы можете загрузить дату из запроса к базе данных в новый экземпляр, а затем манипулировать объектом на основе пользовательских предпочтений и метода setTimezone () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...