请阅读,最好的方法(也是最有效的)是将时间节省为SMALLINT(实际上是INTEGER)。是真的?我正在构建使用SQLite3数据库的应用程序,并且数据库大小必须很小,并且使用日期和时间(特别是时间)进行计算必须是最有效的。
我有这张桌子:
CREATE TABLE events (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
time_start SMALLINT NOT NULL ,
time_end SMALLINT NOT NULL,
message_code VARCHAR(64) NOT NULL,
FOREIGN KEY (message_code) REFERENCES messages (message_code),
CHECK ((time_start BETWEEN 0 AND 1440) AND (time_end between 0 and 1440) AND (message_code <> ''))
);
但是实际上我想像 08:20 那样实时插入值,因为没有人希望计算8小时为480分钟+ 20 = 500 分钟。>
如何将('08:20')转换为数字500?我不需要几秒钟即可计算。
还是您认为使用 DATETIME 是更好的方法?
PS:它是一个调度程序,它在Outlook中列出诸如议程之类的事件。
非常感谢您的任何建议。
最诚挚的问候
答案 0 :(得分:1)
SQLite没有DateTime
数据类型。
您可以将值存储为char(5)
字符串-这仅占用五个字节。您可以直接比较这些值。
sqlite> select '08:20' > '08:30';
0
sqlite> select '08:20' = '08:30';
0
sqlite> select '08:20' < '08:30';
1
0为假,1为真。
以及内置的time函数:
sqlite> select time('08:20') = time('now');
sqlite> select time('08:20') = time('2018-01-01 05:30:59');