Kdb 带日期的点符号

Kdb 带日期的点符号,kdb,Kdb,我试图理解q是如何定义日期的点符号的 案例1:时间变量问题 例如,如果我执行以下操作以从日期开始计算日期: q) d:2014.06.14 q) d.dd 14 i 但如果我尝试在没有任何时间变量的情况下执行此操作: q) (2014.06.14).dd Error: .dd 问题:为什么需要变量来应用点符号。 案例2:内部函数: 带日期的点表示法在函数内部不起作用 q) {x.mm}[2014.01.01] Error: x.mm 解决这个问题的办法是铸造 q){`mm

我试图理解q是如何定义日期的点符号的

案例1:时间变量问题

例如,如果我执行以下操作以从日期开始计算日期:

q) d:2014.06.14

q) d.dd   
  14 i
但如果我尝试在没有任何时间变量的情况下执行此操作:

q) (2014.06.14).dd

 Error: .dd
问题为什么需要变量来应用点符号。

案例2:内部函数:

带日期的点表示法在函数内部不起作用

q) {x.mm}[2014.01.01]

Error: x.mm
解决这个问题的办法是铸造

q){`mm$x}[2014.01.01]  
  1i
问题:为什么时态变量属性在函数内部不起作用?


我想了解点符号的行为。

所有有效的问题都有一些模糊的答案:)

案例1:时态变量问题:为什么需要变量应用点符号。

点表示法不是一种可以像在其他语言中一样使用的构造。这是一种快速获取写入编译器的日期的整数组件的方法(即,我怀疑编译器可能只是在查找[date],没有更复杂的内容)

案例2:内部函数/问题:为什么时态变量属性在函数内部不起作用?:


点表示法不适用于函数内部。这种情况已经存在很长一段时间了,尽管我从未听到过关于原因的合理解释。

我记得在code.kx的某个地方读到过:

高级:使用点表示法访问时态是q中的一个怪癖 成分对函数参数不起作用


我假设访问日期或时间变量的组成部分在局部变量和全局变量中有其自身的限制。

点表示法仅适用于具有“名称”的事物,即属于工作空间树(以及qsql查询中的列)。基本上,如果你不能说
get`a
成功,你也不能说
a.dd

谢谢,但这仍然需要更多的调查。我知道这个概念不是很清楚,网上也没有足够的资源。好吧,这在某种程度上解释了案例2(对于这种行为没有可靠的解释),但是案例1呢?依我看,一个原始对象本身不会有太多的特殊属性,它只是一个具有特定对象类型的对象,仅此而已。但是,通过将一个对象分配给一个变量,q可能会做一个后台工作,将加法属性添加到变量中(比如这些成分)。不过,我希望这一观点足够有效:P@rahul,我认为你最好的选择是坚持选角(
date$
month等等),因为这将永远持续下去work@WooiKent我认为你在某些方面是对的。这就是我试图弄明白q在内部的作用。@JPC:我知道铸造是可行的,但我只是想理解这些概念。