【发布时间】:2020-10-05 03:19:30
【问题描述】:
我一直在我的 CoreData 中包含一个日期,并且也很想知道底层 SQLite 数据库在幕后发生了什么。
我注意到虽然integer 和varchar 用于其他CoreData 属性,但CoreData Date 属性在SQLite 中显示为timestamp。
现在我知道 SQLite 有它的怪癖,特别是:
- 列具有类型关联性而不是固定类型,因此您可以将任何您喜欢的内容放在任何您喜欢的地方
- 您可以创建自己的列类型
- 没有不同的日期/时间类型,并且 SQLite 具有转换函数来处理日期/时间的字符串、整数或实数表示
我还注意到日期以人类可读的格式存储。但是,它似乎是一种非标准格式,而且也落后了几年。
例如:
- SQLite 版本为
1989/10/05 13:15:45 - IS8601格式的版本是
2020-10-05T14:15:45+11:00
上面的 ISO8601 导出版本是正确的。上面的 SQLite 版本取消了 31 年,忽略了我们的 DST 偏移量,并且不符合我知道的任何标准。
CoreData 如何管理日期?
【问题讨论】: