一个简单的例子:
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格式返回我的日期,以便我可以对它们执行过滤查询。
我已阅读此相关文章以供参考:
答案 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)