kdb 获取最近 1 小时的记录

kdb get last 1 hour records

我需要 select 并获取与前 1 小时和 24 小时相关的行。为了处理 24 小时,我使用了这段代码。大约 1 小时,我怎样才能得到它?

yesterday = datetime.now() - timedelta(1)
yesterday = datetime.strftime(yesterday, '%Y-%m-%d')

q.sendSync('{[x;z]select from trades where DateTime > x,symbol=z}', np.datetime64(yesterday,'D'),  np.string_('ETH-USDT'))

kdb 保存的数据帧

                     DateTime            symbol  
0     2022-04-13 12:59:00.171     b'ETH-USDT' 
1     2022-04-13 12:30:00.171     b'ETH-USDT'   
2     2022-04-13 10:55:00.171     b'ETH-USDT'       
3     2022-04-12 10:59:00.171     b'ETH-USDT'  
4     2022-04-10 10:53:00.185     b'ETH-USDT'  
5     2022-04-09 10:50:01.114     b'ETH-USDT'  

您可以将它用作查询时间,而不是昨天 - 这里我们只是从当前时间减去一个小时并将其格式化为日期和小时 + 分钟,而不仅仅是一天

hourago = datetime.strftime(datetime.now() - timedelta(hours = 1), '%Y-%m-%d %H:%M')

q.sendSync('{[x;z]select from trades where DateTime > x,symbol=z}', np.datetime64(hourago,'ms'),  np.string_('ETH-USDT'))

还值得注意的是,您可以完全在 kdb 中执行此操作,而无需 python date/time 操作

q.sendSync('{select from trades where DateTime > .z.p-0D01,symbol=x}', np.string_('ETH-USDT'))

.z.p 给出当前时间戳,-0D01 从这个时间减去一个小时。