我在选择以下时间段时遇到问题:
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
答案 0 :(得分:2)
时间值10
中的10D12:18:23.287989000
是否有意?
数据不回来的原因是时间(类型时间跨度)实际上不是午夜以来的纳秒;根据表格,自午夜起 10天加上 nanos
仅根据时间选择数据:
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.sssssssss
,其中n是相对于午夜。如果它是0,那么它的当前日期为+/- n days
(取决于n是正还是负)。
尝试运行以下内容,它会将两个时间戳之间的差异作为n=10
的时间跨度返回。
q)2018.03.25D10:12:00.000000000 - 2018.03.15D10:00:00.000000000
10D00:12:00.000000000
答案 1 :(得分:2)
虽然您应该修复时间戳(不应该有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