如何将Q语言(KDB)中的日期格式化为MM / DD

时间:2016-09-26 21:52:22

标签: jquery date kdb q-lang

我是KDB / Q Langage的初学者,我正在寻找一种方法将日期对象(或其字符串表示)转换为MM / DD格式。例如,我有2016-09-23,我想将其格式化为09/23。

还有另一个与此主题相关的主题,但我不确定它有多大帮助:How to produce a formatted date string in Q/KDB?

在Q语言中,是否有类似于SQL中 convert(varchar,getdate(),112)的函数?

5 个答案:

答案 0 :(得分:4)

Kdb +中不存在这样的转换函数 - 但是您自己使用Kdb中的一些基本字符串操作进行转换 - 例如:

q) show dt:.z.d
    2016.09.26
q)"/" sv 1 _ "." vs string dt
    "09/26"

有关拆分/加入字符串的更多信息,请参阅vs(来自标量的向量)和sv(来自向量的标量)。

上面的代码也使用_(drop)来删除sting被"分割后的日期的第一部分(年份)。"

答案 1 :(得分:4)

如果您的字符串采用标准格式(即YYYY-MM-DD),则使用索引@深度会更快。

q)list:("2016-09-23";"2016-10-23") 
q)5_'.[list;(::;4 7);:;"/"]
"09/23" 
"10/23"

答案 2 :(得分:1)

替代方案:

q)"/"0:(" **";"-")0:enlist "2016-09-23"
"09/23"

答案 3 :(得分:0)

对于一个非常大的向量,如果你没有设置使用“/”,这将非常快:

q)dts:.z.d+til 1000000;
q)string[dts][;8 9 4 5 6]
"29.06"
"30.06"
"01.07"
"02.07"

如果你想要“/”:

"/"^string[dts][;8 9 10 5 6]

误读了这个问题;这是针对DD / MM格式的。

答案 4 :(得分:0)

签出此GitHub library进行日期时间格式化。它支持格式化日期和时间的excel方法。尽管它可能不适合格式化大量对象。

q).dtf.format["mm/dd"; 2016.09.23]  
"09/23"

q).dtf.format["yy/m/d"; 2016.09.03]  // another example
"16/9/3"