Другой вариант - использовать библиотеку разбора даты, доступную как часть Kx Developer: https://code.kx.com/developer/libraries/date-parser/#printing -dates
Эта библиотека предоставляет ряд утилит для разбора дат и времени из строк. и форматирование их в виде строк из kdb + datatypes
После настройки использование выглядит примерно так (первые несколько команд настраивают env для библиотек для работы и загрузки их в сеансе aq - это также можно сделать с помощью \l
):
jonny@kodiak ~ $ source ~/developer/config/config.profile
jonny@kodiak ~ $ export AXLIBRARIES_HOME=~/developer/
jonny@kodiak ~ $ q $AXLIBRARIES_HOME/ws/axruntimecore.q_
KDB+ 3.6 2018.12.06 Copyright (C) 1993-2018 Kx Systems
l64/ 4(16)core 7360MB jonny kodiak 127.0.1.1 EXPIRE 2020.06.04 jonathon.mcmurray@aquaq.co.uk KOD #4165225
q)t:flip (`contra`weekend`PnL)!(4#`abc;("2020.01.10";"2020.02.17";"2020.03.24";"2020.03.31");-222j, 844j, 1897j, 947j)
q)update .qdate.print["%b-%d";"D"$weekend] from t
contra weekend PnL
--------------------
abc "Jan-10" -222
abc "Feb-17" 844
abc "Mar-24" 1897
abc "Mar-31" 947
q)
Обратите внимание, что мне пришлось проанализировать строковые даты в вашей таблице примеров в kdb + даты с "D"$
, так как библиотека qdate ожидает типы kdb + date / time.