How to store time with timezone infomation in mysql datetime column?
目前,我有来自shopify api(2018-12-16T17:36:29 + 11:00)的时间戳,我需要存储在mysql的datetime字段中。
第一个问题:
到底是什么2018-12-16T17:36:29 + 11:00意味着什么?
日期:2018-12-16,
时间:17:36:29,
时区:+11:00 ?????
第二个问题:
如果我想将时间戳存储到mysql datetime列中。
我收到这个错误
1 | SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2018-12-16T17:36:29+11:00' for column 'shopify_created_at' at row 1 |
使用时区信息存储时间的正确方法是什么?
What exactly 2018-12-16T17:36:29+11:00 means?
这是UTC偏移时间戳,因此您有:
我不熟悉Shopify及其API,但是,如果知道/存储时区很重要,我会将UTC时间存储在数据库的一列中(使用
例:
1 2 3 |
这样,您现在可以在所需的时区获得准确的时间。例:
1 2 |
timezone:+11:00 = UTC + 11:00是UTC的+ 11小时时间偏移量的标识符。此时间用于:北亚,澳大利亚和其他一些国家。
至于时间戳,你可以简单地使用:
1 2 3 |
我不熟悉shopify,但它看起来像UTC偏移,所以它将是:
至于你的第二个问题,你没有:
MySQL converts TIMESTAMP values from the current time zone to UTC for storage, and back from UTC to the current time zone for retrieval.
所有时间戳都是无时区的。您可以单独保存时区,也可以将其保存为字符串。最好的方法是通过从时钟中减去时区来转换
此外,根据您的需要,您可能会做两件事。规范化时间戳将有助于以可靠的方式进行排序,TZ免费,而如果您需要其他shopify查询,则可以存储和检索完整的字符串。