Получить дату начала и окончания предыдущего квартала в q kdb - PullRequest
0 голосов
/ 24 мая 2019

У нас есть требование, когда нам нужна дата начала и окончания предыдущего квартала.
Чтобы получить startData (sd) и endDate (ed), мы можем добиться этого с помощью приведенного ниже кода, но есть ли что-нибудь лучше / чище /эффективный способ сделать это.

sd:"d"$("m"$3 xbar "m"$ .z.d)-3;
ed:("d"$3 xbar "m"$ .z.d)-1;

Ответы [ 2 ]

2 голосов
/ 24 мая 2019

Ваш метод уже достаточно эффективен.

q)"d"$("m"$3 xbar "m"$ .z.d)-3
2019.01.01
q)\t:1000000 "d"$("m"$3 xbar "m"$ .z.d)-3
2611

Однако вы можете попробовать следующее, чтобы сделать его немного более эффективным и чистым:

q)"d"$-3+3 xbar "m"$.z.d
2019.01.01
q)\t:1000000 "d"$-3+3 xbar "m"$.z.d
2281
1 голос
/ 24 мая 2019

Я думаю, что ваше решение достаточно хорошее. Вы можете избавиться от дополнительных месяцев приведения к дате начала и изменить код, чтобы избавиться от скобок.

q) sd:"d"$ -3+3 xbar "m"$ .z.d
q) ed: -1 + "d"$3 xbar "m"$ .z.d

Или вы можете рассчитать оба в одной строке:

q) 0 -1 + "d"$-3 0 + 3 xbar "m"$.z.d
q) 2019.01.01 2019.03.31
...