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

问题描述 投票:0回答:1

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)

kdb k
1个回答
2
投票

[让我首先注意,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)是一种非常常见的情况,因此绝对值得您提供捷径。就在这里!

© www.soinside.com 2019 - 2024. All rights reserved.