2013-06-27 43 views
5

我有一個測試記錄數據庫,其中一列'test_time'定義爲日期時間。我想查詢有多少不同的日期,因爲我想根據日期將測試結果轉儲到csv。我現在有以下幾種:在sqlalchemy中將所選日期時間轉換爲日期

distinct_dates = list(session.query(Test_Table.test_time).distinct()) 

但是這給了我一個datetime不是日期的列表。當然,我可以在Python中進行轉換,但是當我使用sqlite的時候。我做了這個SELECT DISTINCT DATE(test_time) FROM Test_Table。我無法想出sqlalchemy中的等價物。

回答

9

這將是通過使用「投」的表達:

distinct_dates = list(session.query(cast(Test_Table.test_time, DATE)).distinct()) 

編輯:好吧,讓我們給這個一杆:

distinct_dates = list(session.query(func.DATE(Test_Table.test_time)).distinct()) 
+0

不看源代碼我可以想象這最終使用SQL中的DATE()表達式......有可能它不這麼做,但我相信sqlalchemy。 –

+0

我以前試過'cast'。但sqlalchemy總是拋出我這個異常:'ValueError:無法解析日期字符串'2013' - 值不是一個字符串。' – foresightyj

+0

我似乎已經明白了爲什麼。我正在使用sqlite。我打開了sqlalchemy的echo,實際查詢是'SELECT DISTINCT CAST(test_table.test_time AS DATE)as anon_1 FROM test_table'。而且似乎sqlite不支持DATE。它不是返回整個日期,而是僅返回一年。謝謝! – foresightyj

相關問題