Сообщить об ошибке.

Стандартные адаптеры и конвертеры модуля sqlite3

В модуле datetime есть адаптеры по умолчанию для типов date и datetime. Они будут отправлены в SQLite3 в виде дат ISO/меток времени ISO.

Конвертеры SQLite3 по умолчанию зарегистрированы под именем date для datetime.date() и под именем timestamp для datetime.datetime().

Таким образом, в большинстве случаев можно использовать дату/время из Python без каких-либо дополнительных действий. Формат адаптеров также совместим с экспериментальными функциями даты/времени SQLite3.

Следующий пример демонстрирует это:

import sqlite3
import datetime

con = sqlite3.connect(":memory:", 
          detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)
cur = con.cursor()
cur.execute("create table test(d date, ts timestamp)")

today = datetime.date.today()
now = datetime.datetime.now()

cur.execute("insert into test(d, ts) values (?, ?)", (today, now))
cur.execute("select d, ts from test")
row = cur.fetchone()
print(today, "=>", row[0], type(row[0]))
print(now, "=>", row[1], type(row[1]))

cur.execute('select current_date as "d [date]", current_timestamp as "ts [timestamp]"')
row = cur.fetchone()
print("current_date", row[0], type(row[0]))
print("current_timestamp", row[1], type(row[1]))

con.close()

Если временная метка, хранящаяся в SQLite, имеет дробную часть длиннее 6 чисел, ее значение будет усечено с точностью до микросекунды конвертером временной метки.