在数据库中存储时区

use*_*531 15 mysql sql timezone datetime

我将使用MySQL和PHP,并需要将时区存储在数据库中.用了一下就可以读书了,好像我需要使用类似的东西America/Los_Angeles,而不是PST,Pacific Standard Time,PST8PDT,+02.00,等.

我是否存储整个America/Los_Angeles字符串,或者是否存在某种整数ID,例如/sf/answers/810632161/对c#进行了描述?如果是谁的字符串,最大字符数是多少?

O. *_*nes 16

时区字符串就像America/Halifax是指所谓的zoneinfo数据库中的条目.读这个.https://www.iana.org/time-zones目前由互联网号码分配机构维护.它发生了很大的变化,因为它的维护人员争先恐后地跟上夏令时规则和其他临时政治内容的变化.

在类UNIX系统上,条目存储在文件系统目录层次结构中,而不是存储在某些代码编号中.

您询问:

我是否存储整个Asia/Kolkata字符串

是.

它有某种整数ID吗?

不,如果您希望您的应用程序和数据库能够面向未来,那就不是了.在MySQL的一部分中有一个time_zone_id来保存zoneinfo数据,但没有人做出任何关于保持这些数字不变的承诺.

当前(2015g)数据库中最长的字符串是"America/Argentina/ComodRivadavia".它长32个字符.America/Los_Angeles用于存储此信息可能是有意义的,因此您永远不会用完.

顺便说一下,WordPress为用户提供可用时区名称的选项列表(下拉列表),并将用户选择存储为文本.

http://www.iana.org/time-zones


Lau*_*tiu 6

点击这里MySql DateTime

MySQL将TIMESTAMP值从当前时区转换为UTC以进行存储,并从UTC转换回当前时区以进行检索.(对于其他类型,例如DATETIME,不会发生这种情况.)默认情况下,每个连接的当前时区是服务器的时间.可以基于每个连接设置时区.只要时区设置保持不变,您就会获得存储的相同值.

您应该在表格中添加一个新列以保留您的时区,并在提取信息时转换您的时区.