将所选日期时间转换为sqlalchemy中的日期

for*_*tyj 8 python sqlalchemy

我有一个测试记录数据库,其中一列'test_time'定义为datetime.我想查询有多少个不同的日期,因为我想根据日期将测试结果转储到csv.我现在有以下内容:

distinct_dates = list(session.query(Test_Table.test_time).distinct())
Run Code Online (Sandbox Code Playgroud)

但这给了我一个日期时间列表而不是日期.当然我可以用Python转换它,但是当我使用sqlite时.我这样做SELECT DISTINCT DATE(test_time) FROM Test_Table.我无法想出sqlalchemy中的等价物.

Mat*_*ves 17

那将是使用"强制转换"表达式:

from sqlalchemy import cast, Date

distinct_dates = session.query(cast(Test_Table.test_time, Date)).distinct().all()
Run Code Online (Sandbox Code Playgroud)

编辑:好的,让我们试一试:

distinct_dates = session.query(Test_Table.test_time.cast(Date)).distinct().all()
Run Code Online (Sandbox Code Playgroud)

  • 但是,如果我运行原始查询`SELECT DISTINCT DATE(test_table.test_time) AS test_date FROM test_table`,它会给我完整的日期。这个 [link](http://sqlite.1065341.n5.nabble.com/CAST-td23755.html) 谈到了将 sqlite 日期时间转换为日期的奇怪之处。 (2认同)