我正在使用本地sqlite数据库在我的应用程序中对元数据进行离线处理,并且元数据包括时间戳。sqlite - python检索CURRENT_TIMESTAMP作为日期时间对象
我有一个表声明如下:
CREATE TABLE if not exists tbl_dbsync_meta (
maindb_last_checked TIMESTAMP,
global_scores_last_checked TIMESTAMP,
localscores_syncup_last_checked TIMESTAMP)
现在,在一个点上,我从sqlite的检索CURRENT_TIMESTAMP
与上述所有其它时间戳一起,从而为 - 自然 - 找出在时间的差异从现在到所有其他时间戳。
SELECT CURRENT_TIMESTAMP as this_time, * FROM tbl_dbsync_meta
现在的问题是,所有其他字段被正确地检索为Python中的“datetime”对象。但CURRENT_TIMESTAMP
作为字符串返回。
我试图铸造CURRENT_TIMESTAMP
:
SELECT CAST(CURRENT_TIMESTAMP AS TIMESTAMP), * FROM tbl_dbsync_meta
但现在它正在返回一个整数,所有这一切回来是今年(2012年)。
解决这个问题的一个简单方法就是直接从来自sqlite本身的时间差异,而不是将它们检索到python然后再玩。另一个选择是我使用由CURRENT_TIMESTAMP
返回的字符串,将它转换为Python到“日期时间”并使用它。
但是我需要了解CURRENT_TIMESTAMP
(cast或其他)与其他TIMESTAMP
字段之间的区别是什么。这似乎是错误的,这是行不通的。
感谢您的帮助。
P.S:请注意,我从不将Python datettime对象直接存储到SQLite中。任何时候我需要更新这张表,我只是SET global_scores_last_checked = CURRENT_TIMESTAMP
。我只需要将SQLite中的日期转换为Python。
我有
detect_types=sqlite3.PARSE_DECLTYPES
设置btw – 2012-08-07 06:28:19这似乎是一般'功能'的问题。我试过 - SELECT(CURRENT_TIMESTAMP - maindb_last_checked)FROM tbl_dbsync_meta。这也给我返回了一个Unicode字符串,而不是DATETIME对象。而如果我只选择现有的TIMESTAMP字段(如“maindb_last_checked”),它将返回一个日期时间对象.......是这个问题吗? – 2012-08-07 08:00:46
您是如何将Python'datetime'对象存储到时间戳列中的?他们如何转换?请张贴一些Python代码。 – 2012-08-07 08:33:02