如何在 KDB 中使用日期和时间
How to work with date and time in KDB
我尝试通过从另一个中减去一个 dateDtimespan
来使用 dateDtimespan
类型,但是结果 KDB (QPad) 总是显示 0,为什么?
此外,如果我在一列中有 datetime 12.11.2014:22:33:00.000000000
而在另一列中只有时间 22:32:00.000000000
,我如何从第一列中删除日期部分以从第二列中减去时间部分?
要删除日期,您可以使用转换运算符 $。要仅引用时间,您可以在 $ 前加上 `time,如下所示。
q).z.z
2015.02.23T14:10:33.523
q)`time$.z.z
14:10:30.731
q)t:([]ts:10#.z.N;ti:.z.t-til 10)
q)exec `time$ts-ti from t
00:00:00.000 00:00:00.001 00:00:00.002 00:00:00.003 00:00:00.004 00:00:00.005..
您可以在此处查看更多示例。 http://code.kx.com/q/ref/casting/#cast
我更喜欢先将 timestamp
向下转换为 timespan
,然后再计算差异,即 (`timespan$p)-n
。使用另一种方式没有坏处 (`timespan$p-n
),但不如前者明确。
q)dt:( [] p:2#2014.12.11D22:33:00.000000000;n:2#22:32:00.000000000)
q)select (`timespan$p)-n from dt
p
--------------------
0D00:01:00.000000000
0D00:01:00.000000000
我尝试通过从另一个中减去一个 dateDtimespan
来使用 dateDtimespan
类型,但是结果 KDB (QPad) 总是显示 0,为什么?
此外,如果我在一列中有 datetime 12.11.2014:22:33:00.000000000
而在另一列中只有时间 22:32:00.000000000
,我如何从第一列中删除日期部分以从第二列中减去时间部分?
要删除日期,您可以使用转换运算符 $。要仅引用时间,您可以在 $ 前加上 `time,如下所示。
q).z.z
2015.02.23T14:10:33.523
q)`time$.z.z
14:10:30.731
q)t:([]ts:10#.z.N;ti:.z.t-til 10)
q)exec `time$ts-ti from t
00:00:00.000 00:00:00.001 00:00:00.002 00:00:00.003 00:00:00.004 00:00:00.005..
您可以在此处查看更多示例。 http://code.kx.com/q/ref/casting/#cast
我更喜欢先将 timestamp
向下转换为 timespan
,然后再计算差异,即 (`timespan$p)-n
。使用另一种方式没有坏处 (`timespan$p-n
),但不如前者明确。
q)dt:( [] p:2#2014.12.11D22:33:00.000000000;n:2#22:32:00.000000000)
q)select (`timespan$p)-n from dt
p
--------------------
0D00:01:00.000000000
0D00:01:00.000000000