Номер недели в Q / KDB - PullRequest
       7

Номер недели в Q / KDB

3 голосов
/ 24 апреля 2020

Я хочу сопоставить дату / неделю с номером недели в году.

Я подумал о том, как вычесть начало года и разделить на 7 - однако это может не совпадать правильно.

e.g.
2020.01.02 -> Week 1
2020.01.06 -> Week 2

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

Просто для того, чтобы построить отличный ответ от Antons, вы также можете использовать функцию div вместо того, чтобы писать ее, что будет выглядеть примерно так:

{1 + (x - `week $ `date $ 12 xbar `month $ x) div 7}
2 голосов
/ 24 апреля 2020

Я бы предложил использовать следующую функцию:

weekOfYear: {1+floor (x-`week$"d"$12 xbar"m"$x)%7}

Эта функция

  1. Находит первый понедельник до или 1 января. Например, {(`week$"d"$12 xbar"m"$x)}2020.01.01 возвращает 2019.12.30
  2. Затем находит разницу в днях между x и первым понедельником
  3. Делит разницу на 7 и добавляет 1, что возвращает искомый результат

Например,

weekOfYear 2019.12.31 2020.01.01 2020.01.02 2020.01.05 2020.01.06 2020.01.07

возвращает

53 1 1 1 2 2
...