Google Datastore - Storing dates as ISO 8601 Strings vs java.util.Date
我正在使用Joda-Time,我注意到DateTime在Google App Engine数据存储区中存储为
http://code.google.com/p/objectify-appengine/source/browse/src/com/googlecode/objectify/impl/translate/opt/joda/?r=2d48a85eae3a679c0dc0d01631de99f3b4775b29
我知道
与符合ISO 8601标准的字符串相比,将日期/时间存储为
- 不平等查询
- 存储大小
- 读/写成本
- 等等
接受的答案没有错,但我想补充一些额外的细节,以提供更平衡的观点。
a)稳定的查询:只要你断言,ISO-8601就是稳定的
-
您只使用一种日期格式进行存储(ISO定义三种:日历日期,序数日期和星期日期)
-
并且您始终对时间部分使用一个精度(例如始终以毫秒为单位)
-
并且您总是在全局时间戳(使用符号Z为零偏移)时使用UTC。
确认这种稳定性可能与应用有关,而
b)精度:ISO-8601可以表示超过毫秒的更高精度,而
一个引人注目的例子是JDBC-type
出于相当的学术目的:Leapseconds只能以ISO-8601格式存储,而不能与
c)存储大小:当然,
d)读写成本:此项目支持像
如果你真的非常关心性能成本,你甚至可以考虑一种数字类型(长64位)来避免因不必要的对象创建造成的垃圾负担(在极端情况下)。请记住:
java.util.Date的优点:稳定查询(不等式和相等),存储大小以及与具有本机日期表示的其他GAE语言的互操作性。