Предложения по работе со смещением времени в MySQL - PullRequest
0 голосов
/ 22 апреля 2009

Дистилляция этого проекта до самых простых терминов;

  1. Пользователи нажимают кнопку, запись производится с отметкой времени NOW ().
  2. NOW (), конечно, равно времени на сервере создания записи.
  3. Мне нужно показать им статистику, основанную на их часовом поясе, а не на моем.

Каков наилучший способ обработки смещения часового пояса в MySql? Существует ли определенный формат поля, предназначенный для работы со смещением?

Мне нужно будет руководствоваться словами:

   SELECT DATE_FORMAT(b_stamp, '%W') AS week_day, count(*) AS b_total, b_stamp
      FROM table
      WHERE
   (b_stamp >= DATE_SUB(NOW(), INTERVAL 7 DAY))
      AND
   (user_id = '$user_id') GROUP BY week_day ORDER BY b_stamp DESC

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

Я считаю, что наилучшим способом может быть определение их смещения и установка переменной в значение "server_time" +/- их_смещение. Это создает впечатление, что сервер находится в другом месте. Я считаю, что это было бы лучше, так как не было бы никакой дополнительной логики +/-, которую мне нужно было бы добавить в код, запятнать и сделать его уродливым.

С другой стороны, это помещает данные в базу данных с отметками времени, которые находятся по всей доске.

Предложения

Ответы [ 2 ]

1 голос
/ 22 апреля 2009

Вы можете использовать JavaScript для получения часового пояса от клиента следующим образом:

var timeZone = (new Date (). gettimezoneOffset () / 60) * (- 1);

распечатайте переменную и проверьте ее перед использованием. Я думаю, это будет ваша самая простая ставка.

0 голосов
/ 22 апреля 2009

Кроме использования JS, вы можете получить часовой пояс с их IP-адресом (используя что-то вроде ip2location), а затем использовать функцию MySQL CONVERT_TZ ().

...