在mysql中用于时区的数据类型

Tom*_*Tom 4 mysql timezone

我在我的数据库中存储了UTC的日期/时间.我正在努力在用户选择时区后添加此转换,以便显示它们的本地时间.用户基本上从表单中选择:

<select name="DropDownTimezone" id="DropDownTimezone">
   <option value="-12.0">(GMT -12:00) Eniwetok, Kwajalein</option>
   <option value="-11.0">(GMT -11:00) Midway Island, Samoa</option>
   <option value="-10.0">(GMT -10:00) Hawaii</option>
   ...
Run Code Online (Sandbox Code Playgroud)

我可以将选项值设为我想要的任何值,但容易记住的是如上所述.我将使用什么数据类型的mysql?在这种情况下真的重要吗?TINYINT会吗?也许使用ENUM会是一个好主意?

任何建议,将不胜感激.

dus*_*uff 6

您提议的方案(将时区存储为GMT的整数偏移量)可能会因以下情况而失败:

  • 印度,UTC + 05:30(不是整数小时).
  • 基里巴斯,UTC + 14:00(超过12小时).
  • 区分英国时间和GMT.(前者使用夏令时;后者不是.)
  • 区分使用相同GMT偏移但在一年中不同时间切换的一些国家/地区.

对于全时区支持,我建议使用zoneinfo数据库并将时区存储为字符串(例如,"America/New_York").