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