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

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

Например: "select * from table where datestamp like ".date("Y-m-d",strtotime("-1 day"))."%"

даст мне результаты за последние 24 часа в зависимости от времени сервера. Как сделать этот запрос основанным на времени пользователя, а не на времени сервера?

Ответы [ 3 ]

0 голосов
/ 02 июня 2011

Спросите своего пользователя, в каком часовом поясе он находится, затем вычтите / добавьте смещение к времени вашего сервера.

"Последние 24 часа" одинаковы во всем мире, поэтому я бы лучше изменилзапрос охватывает за последние 24 часа , а не в тот же день :

SELECT * FROM `table`
WHERE `datestamp` BETWEEN DATE_SUB(NOW(), INTERVAL 1 DAY) AND NOW()
0 голосов
/ 02 июня 2011

Вы можете сделать это в 3 шага:

1.Определить часовой пояс клиента

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

2.Передайте информацию о часовом поясе в PHP

Если вам нужно использовать функции PHP, зависящие от часового пояса (например, date() в вашем примере), вы можете установить часовой пояс с помощью:

date_default_timezone_set($TZ);

Где $ TZпеременная, в которой вы сохранили часовой пояс из клиентского запроса.

3.Передайте информацию о часовом поясе в MySQL

Если вам нужно использовать функции MySQL, зависящие от часового пояса, вы можете установить часовой пояс для текущего сеанса MySQL с помощью:

mysql_query("SET time_zone = $TZ");
0 голосов
/ 02 июня 2011

Чтобы узнать, как узнать часовой пояс вашего веб-клиента, прочитайте этот вопрос

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