【问题标题】:ValueError when querying dates with SQLite使用 SQLite 查询日期时出现 ValueError
【发布时间】:2012-12-01 02:39:52
【问题描述】:

一个简单的例子:

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 数据库以日期时间格式返回我的日期,以便我可以对它们执行过滤查询。

我已经阅读了这篇相关文章以供参考:

SQLite date storage and conversion

【问题讨论】:

    标签: python sqlite


    【解决方案1】:

    在您的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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      • 2018-10-17
      • 2011-09-25
      相关资源
      最近更新 更多