0D 类型和 n?0D 随机数

0D type and n?0D randoms

A brief introduction to q and kdb+中有几个地方可以使用0D00:01这样的代码创建时间记录。

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

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

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

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

首先请注意,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) 是一个很常见的例子,它绝对值得一个捷径。好了!