sqlite – python Получить CURRENT_TIMESTAMP как объект datetime

Я использую локальную базу данных 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 

Теперь проблема в том, что все остальные поля корректно извлекаются как объекты «datetime» в Python. Однако CURRENT_TIMESTAMP возвращается как строка.

Я попробовал лить CURRENT_TIMESTAMP :

 SELECT CAST(CURRENT_TIMESTAMP AS TIMESTAMP), * FROM tbl_dbsync_meta 

Но теперь он возвращается как INTEGER, и все, что возвращается, – год (2012).

Легкий способ обойти это – просто непосредственно SELECT время-diff из самого sqlite, вместо того, чтобы извлекать их в python, а затем играть. Другой вариант – использовать строку, возвращаемую CURRENT_TIMESTAMP , преобразовать ее в Python в «datetime» и использовать ее.

Однако мне нужно понять, ЧТО разница между CURRENT_TIMESTAMP (литой или иначе) и другими полями TIMESTAMP . Просто кажется неправильным, что это не работает.

Спасибо за вашу помощь.

PS: Обратите внимание: я никогда не храню объекты Datettime Python непосредственно в SQLite. В любое время, когда мне нужно обновить эту таблицу, я просто SET global_scores_last_checked = CURRENT_TIMESTAMP . Я только извлекаю даты из SQLite в Python по необходимости.

One Solution collect form web for “sqlite – python Получить CURRENT_TIMESTAMP как объект datetime”

При подключении необходимо установить PARSE_COLNAMES :

sqlite3.connect(':memory:', detect_types=sqlite3.PARSE_COLNAMES)

Затем будет работать следующее:

select current_timestamp as 'ts [timestamp]'

Это вернет "2012-08-07 13:20:42" (<type 'datetime.datetime'>) .

CAST не работает (скорее всего, ошибка), а CURRENT_TIMESTAMP не возвращает тип datetime, что может быть ошибкой или функцией (помните, что Sqlite не имеет понятия о типах даты и времени, он хранит их как TEXT / REAL / INTEGER).

  • Формат ISO-кода Python UTC datetime не включает Z (смещение Zulu или Zero)
  • Что именно означает T и Z в timestamp?
  • Потеря времени в использовании зоны безопасности при сохранении гиаррхических панд DatetimeIndex для hdf5 в Python
  • Извлечь время из UUID v1 в python
  • Python - лучший язык программирования в мире.