SQLite-将时间(如08:00)转换为整数

时间:2018-07-17 10:51:24

标签: sql sqlite date datetime time

请阅读,最好的方法(也是最有效的)是将时间节省为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中列出诸如议程之类的事件。

非常感谢您的任何建议。

最诚挚的问候

1 个答案:

答案 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');
相关问题