2016-09-26 19 views
3

私はKDB/Q Langageの初心者です。日付オブジェクト(またはその文字列表現)を次のように変換する方法を探しています。 MM/DD形式。たとえば、私は2016-09-23を持っており、それを09/23にフォーマットしたいと思います。日付をQ言語(KDB)でMM/DDにフォーマットする方法

あり、このテーマに関する他のスレッドがあるが、私はそれが可能だろうか役に立つことを確認していない:Q言語でHow to produce a formatted date string in Q/KDB?

変換(varchar型、GETDATE(のようなものと同様の任意の関数があります)、112)はSQLにありますか?

+0

なぜこれに 'jquery'タグが付いていますか? –

答えて

4

文字列が標準形式(YYYY-MM-DDなど)の場合、@ depthのインデックス作成を使用する方が早くなります。

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

なぜでしょうか。 'q ')[ - 5#' list;(::; 2);:;"/"]' – Chromozorz

4

んが、このような変換機能は、KDB +に存在しない - しかし、あなたはKDBでいくつかの基本的な文字列操作とそれを自分で変換する - 例:

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

vs(スカラーからベクトル)とsv(ベクトルからスカラー)を参照してくださいために文字列の分割/結合に関する詳細。

上記のコードでは、スティを「。」で分割した後の日付の最初の部分(年)を削除するのに、_(ドロップ)を使用しています。

1

代替:非常に大きなベクトルの

q)"/"0:(" **";"-")0:enlist "2016-09-23" 
"09/23" 
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形式です。

関連する問題