我正在使用本地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