0

对 q 和 kdb+ 的简要介绍中,有几个地方可以使用类似的代码创建时间记录0D00:01

甚至使用语法的随机时间生成技术:

n?0D0
fcn?0D00:00:20

我发现0D仅在 q4m3 2.5.2 Time Types中提到可选。

code.kx 上是否对此语法有任何引用?还有其他有用的日期/时间随机生成器吗?我检查了大写字母, - 似乎0D是唯一的,请参阅:q)@[value;;::] each ("0",/:.Q.A)

4

1 回答 1

2

首先让我注意,0D...语法并不特定于 rand 运算符。0D当文字 kdb 的类型在没有它的情况下会与您的预期不同时,需要前缀。例如:

q)type 08:09:10.123 / time
-19h
q)type 0D08:09:10.123 / timespan
-16h

当可以明确推断出类型时,前缀是可选的;hh:mm:ss.nnnnnnnnn在时间跨度文字的情况下,使用符号时在点之后提供超过 4 位就足够了:

q)type 08:09:10.123 / time
-19h
q)type 08:09:10.1234 / still time
-19h
q)type 08:09:10.12345 / timespan
-16h

0D当您需要时间跨度值但又不想将所有详细信息指定为纳秒时,该表示法非常方便。我想你会同意0D00:01(1 分钟)比00:01:00.000000000.

回到您的问题,0D0只是一个零值时间跨度,与00:00:00.00000000. 但是,?将其视为1D0(或0D24:00:00.000000000)已通过。我没有看到它在 code.kx.com 上的任何地方记录,但如果你考虑一下,你会同意在 [0; 范围内生成时间跨度;24h) 是一个非常常见的情况,它绝对值得一个捷径。你有它!

于 2020-05-25T11:09:42.703 回答