我正在嘗試查詢這個每小時價格日期的資料集。資料集定義了 UTC 時間上午 12 點 - 12 點的每日價格,我試圖定義 UTC 時間下午 4 點 - 4 點的天數。因此,我需要獲得每天的最高價和最低價,例如:“2021-12-15 16:00:00”和“2021-12-16 15:00:00”,因為那將是開盤價和收盤價交易日。
我現在有這個:
SELECT convert(date,dateadd(S, TimeStamp/1000, '1970-01-01')) as 'date'
,symbol
,Max([high]) as 'Max'
,Min([low]) as 'Min'
FROM [Crypto].[tblMessariPriceHistory]
WHERE symbol = 'DOGE'
and dateadd(S, TimeStamp/1000, '1970-01-01') between '2021-12-15 16:00:00' and '2021-12-16 15:00:00'
Group By convert(date,dateadd(S, TimeStamp/1000, '1970-01-01')),symbol
但結果是這樣的:
| 日期 | 象征 | 最大限度 | 最小 |
|---|---|---|---|
| 2021-12-15 | 狗 | 0.175059052503167 | 0.170510833636204 |
| 2021-12-16 | 狗 | 0.180266282681554 | 0.177596458601872 |
我可以只按 Symbol 分組,但我希望能夠在多天內執行此操作,但這是行不通的。
關于如何將選定的日期范圍定義為多天的組或表格的任何想法?
uj5u.com熱心網友回復:
如果你仔細想想,每次減去 16 小時就會將時間滑回到“開始日”內的某個時間
Monday 16:00 becomes midnight Monday
Monday 23:59 becomes 7:59 Monday
Tuesday 00:00 becomes 8:00 Monday
Tuesday 15:59 becomes 23:59 Monday
Tuesday 16:00 becomes midnight Tuesday
無論如何,一旦您將時間向后滑動 16 小時,您就可以通過將 unix 時間戳除以一天中的毫秒數以及周一 16:00 和周二 15:59:59.999 之間的所有交易來削減時間部分將下降為“星期一”。如果它是 DateTime,我們可以將其轉換為 Date 以實作相同的目的。找到將日期時間視為十進制數的方法很方便,其中整數是日期,小數是時間,因為將其切碎為 int 會丟棄時間并允許每日聚合。如果你想每小時聚合,調整數字,使其代表小時數和一小時的分數(除以 3600000,一小時內的毫秒數)有助于達到同樣的目的
--take off 16h then truncate to number of days since epoch
SELECT
(timestamp-57600000)/86400000 as timestamp,
symbol,
min(low) as minlow,
max(high) as maxhigh
FROM trades
GROUP BY (timestamp-57600000)/86400000 as timestamp, symbol
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/394493.html
