来自日期列(表示为 int)的 SQL 查询返回 datetime.date 对象

SQL query from date column (represented as an int) returns a datetime.date object

提问人:roulette01 提问时间:9/29/2023 最后编辑:Barmarroulette01 更新时间:9/29/2023 访问量:41

问:

我有一个单行的 sql 表。它有一列,条目为 . 在我正在使用的程序中,当我这样做时:date20230906

query = "select max(date) from table_name"
print("res max", cursor.execute(query).fetchall()[0][0])
query = "select date from table_name order by date asc"
print("res all", cursor.execute(query).fetchall()[0][0])

它打印

('res max', 20230906)
('res all', datetime.date(2023, 9, 6))

我试图在程序访问的同一数据库文件上的ipython中重现此内容,但我无法重现此内容(在ipython中,第二次打印也是一个整数)。有谁知道第二个是如何转换为对象的?20230906datetime.date

def query_sql(conn, query):
  return conn.cursor().execute(query).fetchall()
python sql sqlite 日期时间

评论

0赞 chenzhongpu 9/29/2023
您使用的是哪些 RDBM?这里的数据类型是什么?是否转换为20230906?date20001202
0赞 Barmar 9/29/2023
如果列的数据类型真的是,我想不出任何方法可以自动将其转换为。dateINTdatetime.date
0赞 roulette01 9/29/2023
@chenzhongpu对不起,这是一个错别字,应该是.我正在使用2000120220230906sqlite3
0赞 roulette01 9/29/2023
@Barmar我不知道这是怎么回事。两个查询都输入到同一个查询函数中,该查询函数从不进行任何转换,一个给出一个 int,另一个给出一个日期时间。我将使用查询函数编辑 OP。
0赞 roulette01 9/29/2023
@Barmar所以我想我可能说错了。我以为该列是基于第一个查询的返回类型,但我只是查询并打印了列名和类型,我看到了,所以它似乎以 DATE 的形式存储在 sql 数据库中。但这仍然不能解释第一个查询生成了一个 int,第二个查询生成了 datetime.date?dateINT"PRAGMA table_info(byday)"('Column:', u'date', 'Data Type:', u'DATE')

答: 暂无答案