如何将 CoreData 日期间隔转换为 SQLite 日期?

问题描述 投票:0回答:1

我的应用程序数据出现问题!仅出于调试目的,我下载了应用程序的容器,以便可以查看它的 CoreData

.db
文件。

我正在使用 SQLite 客户端来查询它。我发现其中存储的日期 (

NSDate
s) 就好像来自
dateToStore.timeIntervalSinceReferenceDate
的结果,即自 2001 年开始以来的秒数。

SQLite 有一个很好的函数,可以转换 UNIX 时间戳,但这些时间戳是从 1970 年底开始的:

SELECT datetime(ZDATECOLUMN, 'unixepoch') FROM ZTABLENAME

因此,今天的日期

2016-05-11
的 CoreData 时间戳类似于
484676143.607
,但 UNIX 时间戳类似于
1462997743.607
。当对我的数据使用上述 SQL 时,今天的日期将显示为
1985-05-11
如何使用 SQL 将这些 CoreData 时间戳作为人类可读的日期取回?

sqlite date core-data timestamp nsdate
1个回答
0
投票

这个问题很古老,但我今天正在尝试做。您可以使用datetime(),只需将978307200添加到coredata时间戳即可。 Coredata 时间戳是自 2001-01-01 以来的秒数。 978307200 是 unix epoch 和 coredata epoch 之间的秒数差异。因此,按照原始问题的形式,您可以这样做:

SELECT datetime(ZDATECOLUMN + 978307200, 'unixepoch') FROM ZTABLENAME
© www.soinside.com 2019 - 2024. All rights reserved.