在q kdb中获取上一季度的最后一个工作日和第一个工作日(工作日)

在q kdb中获取上一季度的最后一个工作日和第一个工作日(工作日),kdb,Kdb,我想得到上一季度的最后一个工作日(工作日),比如2019.03.31是周日,所以我的要求是得到2019.03.29的输出。 我写了下面的代码,它工作得很完美,但看起来不整洁,对我来说,kdb有资格提供比这更优雅的解决方案 {$[1<mod[dt:("d"$3 xbar "m"$.z.d)-x;7];dt;.z.s x+1]}[1] {$[1您可以使用以下内容: {d:-1+"d"$3 xbar "m"$x;$[2>r:d mod 7;d-1+r;d]}.z.d 它的运行速度略快于

我想得到上一季度的最后一个工作日(工作日),比如2019.03.31是周日,所以我的要求是得到2019.03.29的输出。
我写了下面的代码,它工作得很完美,但看起来不整洁,对我来说,kdb有资格提供比这更优雅的解决方案

{$[1<mod[dt:("d"$3 xbar "m"$.z.d)-x;7];dt;.z.s x+1]}[1]

{$[1您可以使用以下内容:

{d:-1+"d"$3 xbar "m"$x;$[2>r:d mod 7;d-1+r;d]}.z.d
它的运行速度略快于您的方法

q)\ts:100000 {$[not((dt:("d"$3 xbar "m"$ .z.d)-x) mod 7) in 0 1; dt; .z.s x+1]}[1]
1031 4752
q)\ts:100000 {d:-1+"d"$3 xbar "m"$x;$[2>r:d mod 7;d-1+r;d]}.z.d
399 4976
q)\ts:100000 {$[not((dt:("d"$3 xbar "m"$ .z.d)-x) mod 7) in 0 1; dt; .z.s x+1]}[1]
1031 4752
q)\ts:100000 {d:-1+"d"$3 xbar "m"$x;$[2>r:d mod 7;d-1+r;d]}.z.d
399 4976