使用SQLite查询日期时的ValueError

时间:2012-11-30 18:21:48

标签: python sqlite

一个简单的例子:

import sqlite3, datetime, csv
import pandas.io.sql as sql
from dateutil.parser import parse

my_db = 'test_db.db'

connection=sqlite3.connect(my_db,detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)
cursor = connection.cursor()

cursor.execute('''CREATE TABLE test_table (Id  INTEGER PRIMARY KEY, Date DATE);''')

date_str = '1/1/2011'
date_parsed = parse(date_str)

cursor.execute('INSERT into test_table (Id, Date) values(?,?)',(1,date_parsed))

cursor.execute('SELECT * FROM test_table')

的产率:

ValueError: invalid literal for int() with base 10: '01 00:00:00'

我只是想让SQL db以datetime格式返回我的日期,以便我可以对它们执行过滤查询。

我已阅读此相关文章以供参考:

SQLite date storage and conversion

1 个答案:

答案 0 :(得分:2)

CREATE TABLE内,您正在使用Date DATE

CREATE TABLE test_table (Id  INTEGER PRIMARY KEY, Date DATE)

问题在于尝试映射到您的格式不是datetime.date,如果您更改格式以使用TIMESTAMP,那么它会正常工作并尝试将其设置为datetime.datetime ...

CREATE TABLE test_table (Id  INTEGER PRIMARY KEY, Date TIMESTAMP)