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;