Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在KDB中选择时间跨度值的问题_Kdb - Fatal编程技术网

在KDB中选择时间跨度值的问题

在KDB中选择时间跨度值的问题,kdb,Kdb,选择以下时间跨度时,我面临一个问题: t:([] date:2#.z.d ; time: 10D21:28:47.425287000 10D12:18:23.287989000 ) date time -------------------------------- 2018.03.15 10D21:28:47.425287000 2018.03.15 10D12:18:23.287989000 当我运行下面的查询时,我没有得到第二条记录 sel

选择以下时间跨度时,我面临一个问题:

t:([] date:2#.z.d ; time: 10D21:28:47.425287000 10D12:18:23.287989000 )

date       time                 
--------------------------------
2018.03.15 10D21:28:47.425287000
2018.03.15 10D12:18:23.287989000
当我运行下面的查询时,我没有得到第二条记录

select from t where time within (12:00;13:00)
我期待着表中的第二条记录:

date       time                
-------------------------------
2018.03.15 10D12:18:23.287989000

时间值
10D12:18:23.287989000
中的
10
是故意的吗

数据无法返回的原因是时间(timespan类型)实际上不是午夜后的纳秒;从表中可以看出,从午夜开始的时间是10天以上

要仅根据时间选择数据,请执行以下操作:

q)select  from t where (`time$(`date$0)+time) within (12:00;13:00)
date       time                
-------------------------------
2018.03.15 10D12:18:23.287989000
尝试从表中添加日期和时间,您将看到10天的转发日期

q)select date+time from t

date                         
-----------------------------
2018.03.25D21:28:47.425287000
2018.03.25D12:18:23.287989000
时间跨度基本上是nDhh:mm:ss.sss,其中n是相对于午夜的。如果为0,则为当前日期,否则为
+/-n天
(取决于n为正还是负)

尝试运行以下命令,它将以
n=10
的时间跨度返回两个时间戳之间的差异

q)2018.03.25D10:12:00.000000000 - 2018.03.15D10:00:00.000000000   
10D00:12:00.000000000

虽然您应该修复时间戳(不应该有10D),但如果您无法修复上游数据,但您认为时间戳实际上是正确的,那么您可以按如下方式去除10D:

q)update mod[;`long$10D]time from t
date       time
-------------------------------
2018.03.16 0D21:28:47.425287000
2018.03.16 0D12:18:23.287989000

10
实际上是无意的,好像我存储的
nanos
搞乱了,应该是
0D12:18:23.287989000
。谢谢你的解释。