kdb+:根据条件从列表中删除元素

kdb+: Remove elements from a list based on a condition

我有一个如下列表,我想删除过去的日期,或者比今天早的日期。我需要一个 if 语句还是有类似 q 的方法来做?

q)d
1970.03.16 1980.03.17 1990.03.19 2000.03.13 2010.03.15
q)type d
14h

我相信我明白了:

q)today:`date$.z.z
q)func:{[lst] lst where today<lst}
q)d
1970.03.16 1980.03.17 1990.03.19 2020.03.13 2017.09.15
q)func d
2020.03.13 2017.09.15

您可以跳过所有函数并内联执行此操作。

在列表中查找日期大于今天的索引 (d>.z.D),然后使用该列表从列表中提取项目 (d where d>.z.D)

q)d:1970.03.16 1980.03.17 1990.03.19 2020.03.13 2017.09.15
q)d>.z.D
00011b
q)d where d>.z.D
2020.03.13 2017.09.15