在A brief introduction to q and kdb+中,有多个地方创建了带有0D00:01
这样的代码的时间记录。
甚至使用语法的随机时间生成技术:
n?0D0
fcn?0D00:00:20
我发现仅在q4m3 0D
中提到了2.5.2 Time Types作为可选。
code.kx上是否有对此语法的引用?还有其他有用的日期/时间随机生成器吗?我检查了大写字母-似乎0D
是唯一的字母,请参阅:q)@[value;;::] each ("0",/:.Q.A)
[让我首先注意,0D...
语法并非特定于rand运算符。如果文字kdb的类型推断出的含义与您的预期目的不同,则需要前缀0D
。例如:
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)是一种非常常见的情况,因此绝对值得您提供捷径。就在这里!