database - 如何在 KDB 中选择给定时间戳之前/之后的第一条记录?

标签 database kdb q-lang

我目前只是提取时间戳前 1 分钟的所有记录(例如,如果我感兴趣的时间戳是 2014.04.14T09:30):

select from Prices where timestamp within 2014.04.14T09:29 2014.04.14T09:30, stock=`GOOG

但是,这显然不是很稳健。有时,之前的记录可能位于 09:25am,然后查询没有返回任何内容。有时,如果价格变化很大,查询可能会返回数百条记录,即使我只需要返回最后一条记录。

我知道这可以通过 asof 连接来完成,但暂时想避免它,因为 Prices 目前实在是太大了。

我也有兴趣做同样的事情,但我想找到给定时间戳之后的第一条记录。

另请注意,Prices 是一个展开

最佳答案

选择给定时间戳之前的最后一条记录:

q)select from Price where stock=`GOOG,i=last i,timestamp<2014.04.14T09:30

选择给定时间戳后的第一条记录:

q)select from Price where stock=`GOOG,i=first i,timestamp>2014.04.14T09:30

关于database - 如何在 KDB 中选择给定时间戳之前/之后的第一条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23055509/

相关文章:

php - Laravel 中的“播种”是什么意思?

mysql - 存储 20 个国家/地区 30 个类别的项目总计

kdb - 在q kdb中获取上一季度的最后一个工作日和第一个工作日(工作日)

kdb 连接(串联)具有重复列的表

python - 将包含字符串列的 pandas DataFrame 传递给 kdb+ (使用 qPython API)

android - 通过排序从 dynamoDB 中获取项目

java - 谁能说出如何将 java 项目连接到 XAMPP 数据库?

kdb - 使用 Over 在 kdb+ 中连接枚举列和符号列

kdb - 合并展开表的 sym 文件

kdb - 如何更新 KDB 表中的相关值