如何将 Q 语言 (KDB) 中的日期格式化为 MM/DD
How to format a Date in Q language (KDB) to MM/DD
我是 KDB/Q 语言的初学者,我正在寻找一种方法将日期对象(或其字符串表示形式)转换为 MM/DD 格式。例如,我有 2016-09-23,我想将其格式化为 09/23。
还有另一个主题与此主题相关,但我不确定它会有多大帮助:
Q语言中有没有类似于SQL中的convert(varchar, getdate(), 112)之类的函数?
Kdb+ 中不存在这样的转换函数 - 但您可以使用 Kdb 中的一些基本字符串操作自行转换它 - 例如:
q) show dt:.z.d
2016.09.26
q)"/" sv 1 _ "." vs string dt
"09/26"
有关拆分/连接字符串的更多信息,请参阅 vs
(vector from scalar) and sv
(向量中的标量)。
上面的代码还使用 _
(drop) 在字符串被“.”分割后删除日期的第一部分(年份)。
如果您的字符串采用标准格式(即 YYYY-MM-DD),使用索引 @depth 会更快。
q)list:("2016-09-23";"2016-10-23")
q)5_'.[list;(::;4 7);:;"/"]
"09/23"
"10/23"
备选方案:
q)"/"0:(" **";"-")0:enlist "2016-09-23"
"09/23"
对于非常大的矢量,如果您没有设置为使用“/”,这将非常快:
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 格式。
查看此 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"
我是 KDB/Q 语言的初学者,我正在寻找一种方法将日期对象(或其字符串表示形式)转换为 MM/DD 格式。例如,我有 2016-09-23,我想将其格式化为 09/23。
还有另一个主题与此主题相关,但我不确定它会有多大帮助:
Q语言中有没有类似于SQL中的convert(varchar, getdate(), 112)之类的函数?
Kdb+ 中不存在这样的转换函数 - 但您可以使用 Kdb 中的一些基本字符串操作自行转换它 - 例如:
q) show dt:.z.d
2016.09.26
q)"/" sv 1 _ "." vs string dt
"09/26"
有关拆分/连接字符串的更多信息,请参阅 vs
(vector from scalar) and sv
(向量中的标量)。
上面的代码还使用 _
(drop) 在字符串被“.”分割后删除日期的第一部分(年份)。
如果您的字符串采用标准格式(即 YYYY-MM-DD),使用索引 @depth 会更快。
q)list:("2016-09-23";"2016-10-23")
q)5_'.[list;(::;4 7);:;"/"]
"09/23"
"10/23"
备选方案:
q)"/"0:(" **";"-")0:enlist "2016-09-23"
"09/23"
对于非常大的矢量,如果您没有设置为使用“/”,这将非常快:
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 格式。
查看此 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"