2012-04-04 2 views
0

Мне нужно создать плейлист в базе данных, чтобы узнать, когда каждое видео будет воспроизводиться игроком. Я буду использовать что-то вроде этого: table playlist with: id, video_id, play_time и, например, если play_time 2012-04-10 14:00:00, видео должно быть воспроизведено в 14:00:00 в 2012-04-10, но связано с часовым поясом, где пользователь располагается.MySQL хранит плейлист для разных часовых поясов

Что лучше использовать для этого datetime или timestamp?

+1

Вы могли бы быть лучше хранить все времена, как UTC, а затем тонкой настройки приложения, чтобы сделать локальные преобразования TZ для пользователя. – liquorvicar

+1

Почему это имеет значение, что «лучше» использовать? Вам явно нужна информация от пользователя, который сообщает вам, в какой временной зоне они находятся. Если вы используете 'datetime' и сохраняете его в UTC (Европа/Лондон), то вы достигаете такого же эффекта, как если бы вы использовали« timestamp », который по умолчанию соответствует UTC. Что бы ни случилось, вам нужна информация от вашего пользователя о их часовом поясе, чтобы вы могли рассчитать требуемое смещение. Ответ - оба. Вы можете использовать оба типа для хранения данных даты. Это ваше приложение, которое предоставляет ваши запросы с требуемыми датами, которые должны включать смещения часового пояса. –

ответ

1

Из MySQL manual:

MySQL преобразует значения TIMESTAMP из текущей временной зоны в UTC для хранения , и назад от UTC к текущему времени зоны для извлечения. (Это не относится к другим типам, таким как DATETIME.) По умолчанию текущий часовой пояс для каждого соединения - это время сервера. Часовой пояс может быть установлен для каждого соединения. Пока настройка времени остается постоянной, вы возвращаете то же самое значение, которое вы храните. Если вы сохраняете значение TIMESTAMP, а затем изменяете часовой пояс, а извлекаете значение, полученное значение отличается от сохраненного вами значения . Это происходит потому, что тот же часовой пояс не использовался для преобразования в обоих направлениях. Текущий часовой пояс доступен как значение системной переменной time_zone. Для получения дополнительной информации см. Раздел 9.6, “MySQL Server Time Zone Support”.

Так что ответ: временная метка