我正在使用本地 sqlite 数据库在我的应用程序中对元数据进行离线处理,元数据包括时间戳。
我有一个声明如下的表:
CREATE TABLE if not exists tbl_dbsync_meta (
maindb_last_checked TIMESTAMP,
global_scores_last_checked TIMESTAMP,
localscores_syncup_last_checked TIMESTAMP)
现在,在某一时刻,我CURRENT_TIMESTAMP
从 sqlite 中检索到上述所有其他时间戳,以便 - 自然地 - 找出现在与所有这些其他时间戳之间的时间差异。
SELECT CURRENT_TIMESTAMP as this_time, * FROM tbl_dbsync_meta
现在的问题是,所有其他字段都被正确检索为 Python 中的“日期时间”对象。但是CURRENT_TIMESTAMP
作为字符串返回。
我试过铸造CURRENT_TIMESTAMP
:
SELECT CAST(CURRENT_TIMESTAMP AS TIMESTAMP), * FROM tbl_dbsync_meta
但现在它以 INTEGER 形式返回,返回的只是年份(2012 年)。
我解决这个问题的一个简单方法是直接SELECT
从 sqlite 本身获取时间差异,而不是将它们检索到 python 中然后玩弄。另一个选择是我使用返回的字符串CURRENT_TIMESTAMP
,在 Python 中将其转换为“日期时间”并使用它。
CURRENT_TIMESTAMP
但是我需要了解(演员或其他)与其他TIMESTAMP
领域之间的区别是什么。这不起作用似乎是错误的。
谢谢你的帮助。
PS:请注意,我从不将 Python 日期时间对象直接存储到 SQLite 中。每当我需要更新此表时,我只需SET global_scores_last_checked = CURRENT_TIMESTAMP
. 出于必要,我只将 SQLite 中的日期检索到 Python 中。