我将API作为字符串以此格式提取日期:yyyy-MM-dd'T'HH:mm:ss'Z'
问题是当我尝试保存它时,让我们说今天2015-01-23T13:42:00Z
标记Z
和T
未显示在MySQL数据库中(日期保存为{{1} }})。
我想保留字段日期类型,即我不想将日期保存到2015-01-23 13:42:00
字段。
我不熟悉日期时区格式,欢迎任何建议。
答案 0 :(得分:10)
首先,请阅读DATETIME
和TIMESTAMP
类型in the mysql docs。
然后,决定使用哪种字段类型:
如果您想要提交,存储和检索相同的值而不让MySQL执行时区转换,请使用DATETIME
字段。
如果您想使用特定时区向/从字段提交和检索值,但实际存储UTC时间,请使用TIMESTAMP
。
TIMESTAMP
类型用于基于UTC的值,但只需将会话时区明确设置为UTC。永远永远在VARCHAR
字段中存储日期/时间值。
最后,要意识到数据库中实际存储与您检查数据时看之间存在巨大差异。数据库以非可见的二进制表示形式有效地存储事物。您只需观察在显示期间投射到特定格式的值。提交数据时使用的格式有助于制作二进制值,但随后会丢弃这些字符串。稍后当您查看该字段时,如果您将它们打印到屏幕上,那么它会转换回字符串,以便它可以显示该值。
如果您发送了一个整数作为" 1,234"它没有什么不同。 - 它实际上并不存储该字符串,它存储0x04D2
(或0000 0100 1101 0010
二进制)。你可以读回来作为" 1234"或" 1,234"将逗号放在正确位置的格式与存储值的方式无关。它只与显示值的工具如何呈现输出有关。您的日期格式设置方案也是如此。