从Lightning .sqllight中提取时间戳

时间:2016-10-16 13:03:01

标签: php mysql sqlite

对我的英语不屑一顾。 我将从Thunderbird Lightning Addon SQLLight文件中提取正确的时间戳。

我的SQL语句是:

CREATE TABLE cal_events (
    cal_id varchar(1000),
    id varchar(1000),
    time_created INTEGER,
    last_modified INTEGER,
    title varchar(1000),
    priority INTEGER,
    privacy varchar(1000),
    ical_status varchar(1000),
    flags INTEGER,
    event_start INTEGER,
    event_end INTEGER,
    event_stamp INTEGER,
    event_start_tz varchar(1000),
    event_end_tz varchar(1000),
    recurrence_id INTEGER,
    recurrence_id_tz varchar(1000),
    alarm_last_ack INTEGER, offline_journal INTEGER);

INSERT INTO cal_events VALUES('03278cd9-7f6a-40ab-8629-c1c3c28b97ec','59b57163-9614-47d2-8fdf-e84e784a4cd5',1316710084000000,1316710121000000,'Event Test 1',NULL,NULL,NULL,4,1317133800000000,1317135600000000,1316710121000000,'Europe/Berlin','Europe/Berlin',NULL,NULL,NULL,NULL);

我会将event_startevent_end提取到正确的时间。 但这不是PHP Unix时间戳。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:0)

挖掘Lightning source code显示以微秒为单位存储的时间戳。要将微秒转换为秒(即Unix时间戳),您需要除以100万:

select datetime(event_start/1000000, 'unixepoch') from cal_events

来自the documentationunixepoch修饰符的解释:

  

这个修饰符导致DDDDDDDDD不像通常那样被解释为朱利安日数,而是解释为Unix时间 - 自1970年以来的秒数。

SQLite datetime函数以%Y-%m-%d %H:%M:%S格式返回,例如2016-10-16 16:43:01。别忘了检查时区字段!