我正在使用SQLite Maestro查看我昨天的iPhone备份文件,日期字段显示INTEGER数字 - 例如我上次短信的日期显示为404076049.如何将其转换为可读的日期时间?
我找到了一个例子SELECT strftime("%m-%d-%Y", date_col, 'unixepoch') AS date_col
,但将上述数字转换为12-31-1982,这绝对是错误的(日期应该是昨天的某个时间)
有什么想法吗?
答案 0 :(得分:4)
Mac使用与UNIX纪元时间不同的“纪元时间”。
UNIX纪元日期是1970年1月1日午夜UTC(又名格林威治标准时间)
Mac OS纪元日期是2001年1月1日午夜UTC。
我不知道如何使用SQL语句将日期从整数格式转换为日期字符串,但我知道如何使用Cocoa执行此操作:
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate: intValue];
您应该能够计算2个日期系统之间的差异,并将其作为转换因子应用:
NSDate *date = [NSDate date];
NSTimeInterval secondsSince2001 = [date timeIntervalSinceReferenceDate];
NSTimeInterval secondsSince1970 = [date timeIntervalSince1970];
long int difference = trunc(secondsSince2001 - secondsSince1970);
然后,您可以在select语句中使用它之前将“差异”添加到整数值。
答案 1 :(得分:0)
因此,基于Audrey的评论,请在SQL中执行此操作(并在MacOS Mohave中使用新的纳秒级时间戳):
SELECT strftime("%Y-%m-%d", (date / 1000000000) + 978307200, 'unixepoch')
AS date_1 from message