我有一個包含歐元/美元的價格對於一個給定的日期時間行的SQL數據庫:Python的SQL函數,查詢組日期以分鐘
我想這些數據分成1組分鐘並獲得一些信息,我寫了一個調用sqlite3數據庫的python程序。現在,我有這個程序:
def SQLQuerySpecial(currency,start,end):
sql = 'SELECT f.datetime, f.buy, c.minp, c.maxp, c.avgp FROM {c} f INNER JOIN (SELECT MIN(datetime) mindate, MAX(datetime) maxdate, MIN(sell) minp, MAX(sell) maxp, AVG(buy) avgp FROM {c} GROUP BY strftime("%Y-%m-%d %H:%M",datetime)) c ON f.datetime = c.mindate or f.datetime = c.maxdate'.format(c = currency)
當我這樣做:
SQLQuerySpecial("EUR", "2002-01-02 01:27:00", "2002-01-02 01:34:00")
我得到的結果是:
( '2002-01-02 1時26分33秒',0.8913 ,0.8913,0.8913,0.8913)
( '2002-01-02 1點27分12秒',0.8946,0.8946,0.8947,0.89462)
( '2002-01-02 1點27分49秒' ,0.8 946,0.8946,0.8947,0.89462)
( '2002-01-02 1點28分○○秒',0.8947,0.8946,0.8947,0.8946454545454546)
('2002-01-02 1點28分○○秒'0.8946,0.8946,0.8947,0.8946454545454546)
( '2002-01-02 1點28分43秒',0.8946,0.8946,0.8947,0.8946454545454546)
(' 2002-01-02 1時28 :43',0.8946,0.8946,0.8947,0.8946454545454546)
('2002-01-02 01:29:49',0.8946,0.8946,0.8947,0.89465)
( '2002-01-02 1點29分49秒',0.8947,0.8946,0.8947,0.89465)
( '2002-01-02 1時29分52秒',0.8946,0.8946,0.8947,0.89465 )
( '2002-01-02 1點29分52秒',0.8947,0.8946,0.8947,0.89465)
( '2002-01-02一點30分41秒',0.8945,0.8945,0.8946 ,0.8945299999999999)
...等等21行結果。
我想與我的1點27個和1時34分參數之間的功能是什麼,是爲了獲得只有8行:
2002-01-02 01:27:XX,購買價格@ 1點27分,買入價在01:27和01:28之間,買入價在01:27和01:28之間,買入價在1:28之間
2002-01-02 01:28:xx,buy price @ 01 :28,01:28和01:29之間的最高買入價,01:28和01:29之間的最低買入價,@ 1:29的買入價,
2002-01-02 01:29:xx ...
...
至2002-01-02 01:34:XX ...
老實說,我試圖找到做正確的方式,但它的棘手對我來說,我不是非常好的SQL。感謝您的閱讀和幫助。
特別感謝unutbu
這個工程,我使用運營商BETWEEN的日期,謝謝 – prince 2012-02-29 15:23:43