函数不返回kdb/q中的值

函数不返回kdb/q中的值,kdb,Kdb,我在kdb/q中有一个函数声明: q)func_demo:{[time1;time2] select from t where time within(time1 time2)} 其中时间的数据类型为v。而且查询工作得很好 我在函数中传递了两次: q)func_demo[13:00:00 13:00:02] 但是控制台中没有显示任何表格,它给了我类似的信息: {[time1;time2] select from tt where tp_time within(time1 time2)}[13

我在kdb/q中有一个函数声明:

q)func_demo:{[time1;time2] select from t where time within(time1 time2)}
其中时间的数据类型为
v
。而且查询工作得很好

我在函数中传递了两次:

q)func_demo[13:00:00 13:00:02]
但是控制台中没有显示任何表格,它给了我类似的信息:

{[time1;time2] select from tt where tp_time within(time1 time2)}[13:00:00 13:00:02]
有人能给我一些如何处理这个问题的提示吗?这是因为我传入参数时没有将
13:00:00
转换为键入“v”吗


非常感谢

函数采用两个参数time1和time2 在您的行
q)func_demo[13:00:00 13:00:02]
中,您只传递函数一个参数,该参数是一个时间列表

你的意思是通过功能演示[13:00:00;13:00:02]

返回的实际上是函数投影。下面是代码来解释

q)f:{x+y}
q)f[2;2]
4
q)f[2 2]
{x+y}[2 2]
q)proj:f[2 2]
q)proj 10 100
12 102
q)proj
{x+y}[2 2]

函数采用两个参数time1和time2 在您的行
q)func_demo[13:00:00 13:00:02]
中,您只传递函数一个参数,该参数是一个时间列表

你的意思是通过功能演示[13:00:00;13:00:02]

返回的实际上是函数投影。下面是代码来解释

q)f:{x+y}
q)f[2;2]
4
q)f[2 2]
{x+y}[2 2]
q)proj:f[2 2]
q)proj 10 100
12 102
q)proj
{x+y}[2 2]

您需要按照@emc211的建议传递参数;但是,您使用的函数有问题。
(time1 time2)

time1

{[time1;time2] select from tt where tp_time within(time1; time2)}[13:00:00;13:00:02]
说明:

time1:13:00:00
time2:13:00:02
这类似于
time1@time2

q)(time1 time2)
'type
[0]  (time1 time2)
要使用
time1
time2
作为列表:

q)(time1;time2)
13:00:00 13:00:02
如果使用的是实际值,则无需指定
用于类似类型的元素

(time1;time2)~(13:00:00 13:00:02)
1b

您需要按照@emc211的建议传递参数;但是,您使用的函数有问题。
(time1 time2)

time1

{[time1;time2] select from tt where tp_time within(time1; time2)}[13:00:00;13:00:02]
说明:

time1:13:00:00
time2:13:00:02
这类似于
time1@time2

q)(time1 time2)
'type
[0]  (time1 time2)
要使用
time1
time2
作为列表:

q)(time1;time2)
13:00:00 13:00:02
如果使用的是实际值,则无需指定
用于类似类型的元素

(time1;time2)~(13:00:00 13:00:02)
1b
谢谢但如果我通过q)func_演示[13:00:00;13:00:02],它会给我错误:“type(错误类型)tp_time v(数据类型)s(属性)instrument_id i(数据类型)谢谢。但如果我通过q)func_demo[13:00:00;13:00:02],它会给我错误:“类型(错误类型)tp_时间v(数据类型)s(属性)仪器id i(数据类型)