我想在SQLite中将DateTime数据存储为julianday吗?

sqlite文档指定在DB中存储日期时间值的首选格式是使用Julian Day(使用内置函数).

但是,我在python中看到的所有框架(pysqlite,sqlAlchemy)都将datetime.datetime值存储为ISO格式的字符串.他们为什么这样做?

我通常会尝试将框架调整为将日期时间存储为julianday,这非常痛苦.我开始怀疑这是值得的.

请与我分享在这个领域的经验.坚持julianday有道理吗?

两种方式存储.可以按照自己的方式设置框架,如果您希望找到带有ISO格式字符串的原始列,那么这可能比它的价值更令人痛苦.

有两列的问题是数据一致性,但sqlite应该拥有使其工作所需的一切.版本3.3支持检查约束和触发器.阅读date and time functions.您应该能够在数据库中完全满足您的需求.

CREATE TABLE Table1 (jd,isotime);

CREATE TRIGGER trigger_name_1 AFTER INSERT ON Table1
BEGIN
    UPDATE Table1 SET jd = julianday(isotime) WHERE rowid = last_insert_rowid();
END;

CREATE TRIGGER trigger_name_2 AFTER UPDATE OF isotime ON Table1
BEGIN
    UPDATE Table1 SET jd = julianday(isotime) WHERE rowid = old.rowid;
END;

如果您无法在数据库中执行所需操作,则可以编写C扩展来执行所需的功能.这样,除了加载扩展程序之外,您不需要触摸框架.

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能