SQLite-将时间(如08:00)转换为整数
请注意,我读到最好的方法(也是最有效的)是将时间节省为一个小整数(实数)。是真的吗?我正在构建使用SQLite3数据库的应用程序,数据库大小必须很小,并且使用日期和时间(特别是时间)计算必须是最有效的 我有这张桌子:SQLite-将时间(如08:00)转换为整数,sql,sqlite,date,datetime,time,Sql,Sqlite,Date,Datetime,Time,请注意,我读到最好的方法(也是最有效的)是将时间节省为一个小整数(实数)。是真的吗?我正在构建使用SQLite3数据库的应用程序,数据库大小必须很小,并且使用日期和时间(特别是时间)计算必须是最有效的 我有这张桌子: CREATE TABLE events ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, time_start SMALLINT NOT NULL , time_end SMALLINT NOT NULL,
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 <> ''))
);
创建表事件(
id整数非空主键自动递增,
time\u start SMALLINT不为空,
时间\u end SMALLINT不为空,
消息代码VARCHAR(64)不为空,
外键(消息代码)引用消息(消息代码),
检查((时间从0到1440之间开始)和(时间从0到1440之间结束)以及(消息代码“”)
);
但事实上,我希望实时插入值,比如08:20,因为没有人希望计算8小时等于480分钟+20=500分钟
如何将('08:20')转换为数字500?我不需要用秒来计算
或者你认为使用DATETIME是更好的方法吗
PS:它是一个调度程序,在outlook中列出事件,如议程
非常感谢你的建议
向您致意,SQLite没有
DateTime
数据类型
您可以将值存储为char(5)
strings-这将只占用五个字节。您可以直接比较这些值
sqlite> select '08:20' > '08:30';
0
sqlite> select '08:20' = '08:30';
0
sqlite> select '08:20' < '08:30';
1
是的,comparsion工作得很好:)非常感谢
sqlite> select time('08:20') = time('now');
sqlite> select time('08:20') = time('2018-01-01 05:30:59');