我想添加一些有关在 UNIX 纪元时间中使用 SQLite 日期和时间的信息:
UNIX 纪元是 1970-01-01 的 00:00:00,即 1970 年 1 月 1 日午夜。UNIX 机器(如运行 Linux 的机器)上的当前时间以从那时起以秒为单位测量。
SQLite 支持这个纪元时间,我发现它在 SQLite 中用作 DateTime 字段的格式非常有用。
具体来说,假设我想要一个 Event 表,用于音乐会等活动。我想要一个 fromDateTime 字段来存储活动开始的时间。我可以通过将 fromDateTime 字段设置为 INTEGER 类型来做到这一点,如下所示:
CREATE TABLE IF NOT EXISTS Event(
eventID INTEGER PRIMARY KEY,
name TEXT,
ratingOutOf10 REAL,
numberOfRatings INTEGER,
category TEXT,
venue TEXT,
fromDateTime INTEGER,
description TEXT,
pricesList TEXT,
termsAndConditions TEXT
);
现在,让我们来看看 UNIX 纪元与 SQLite DateTime 字段的用法:
Basic
select strftime('%s', '2016-01-01 00:10:11'); --returns 1451607012
select datetime(1451607012, 'unixepoch'); --returns 2016-01-01 00:10:11
select datetime(1451607012, 'unixepoch', 'localtime'); --returns 2016-01-01 05:40:11 i.e. local time (in India, this is +5:30).
Only dates and/or times:
select strftime('%s', '2016-01-01'); --returns 1451606400
select strftime('%s', '2016-01-01 16:00'); --returns 1451664000
select date(-11168899200, 'unixepoch'); --returns 1616-01-27
select time(-11168899200, 'unixepoch'); --returns 08:00:00
Other stuff:
select strftime('%d-%m-%Y %H:%M:%S', '2012-09-13 12:44:22') --returns 13-09-2012 12:44:22
现在,这是我们的事件表的上述示例用法:
EXAMPLE:
insert into Event
(name, ratingOutOf10, numberOfRatings, category, venue, fromDateTime, description, pricesList, termsAndConditions)
VALUES
('Disco', '3.4', '45', 'Adventure; Music;', 'Bombay Hall', strftime('%s','2016-01-27 20:30:50'), 'A dance party', 'Normal: Rs. 50', 'Items lost will not be the concern of the venue host.');
insert into Event
(name, ratingOutOf10, numberOfRatings, category, venue, fromDateTime, description, pricesList, termsAndConditions)
VALUES
('Trekking', '4.1', '100', 'Outdoors;', 'Sanjay Gandhi National Park', strftime('%s','2016-01-27 08:30'), 'A trek through the wilderness', 'Normal: Rs. 0', 'You must be 18 or more and sign a release.');
select * from event where fromDateTime > strftime('%s','2016-01-27 20:30:49');
我喜欢这个解决方案,因为它非常容易使用编程语言,无需过多考虑 SQLite 的 DATE、TIME、DATETIME 等数据类型所涉及的各种格式。