0
votes

Mise à jour uniquement pour les non-blancs dans KDB

J'ai une requête onglet code> avec la colonne date code> avec format yyyy.mm.dd code>. Je veux convertir ces dates dans le format aaaa-mm-dd code> et je peux le faire correctement ci-dessous: xxx pré>

Cependant, certaines valeurs de ma colonne sont vides et Je vais obtenir 0000-00-00 code> pour ces valeurs. De Cette réponse Je comprends que je ne peux probablement pas les remplacer par des blancs, mais cela ne semble pas être très efficace: P>

date[; "0000-00-00"; ""]

kdb

1 commentaires

Juste pour l'enregistrement, l'explication de ce que q) onglet: date de mise à jour: {"0" ^ "-" SV'Flip 4 -2 -2 $ \ 'string \ \ \ \ `mm \` dd $ \ \ \ \ : x} date de l'onglet est donnée par Cette merveilleuse réponse ici


3 Réponses :


2
votes

Peut-être quelque chose comme ça? XXX


0 commentaires

1
votes

Vous pouvez contourner ce problème en modifiant la façon dont vous analysez les dates: xxx

ceci utilise le SSR fonction à chaque date pour simplement remplacer chaque ". " avec un " - ". < / p>


0 commentaires

1
votes

Pour répondre à votre question initiale, la raison pour laquelle une instruction de mise à jour avec une clause WHERE ne fonctionne pas est que votre colonne d'origine est de type de type. L'instruction UPDATE ne convertirait qu'un sous-ensemble de cette colonne en caractères de caractères, ce qui entraîne une liste mixte, qui n'est pas compatible avec la colonne de type Date. Pour éviter cela, tout en utilisant toujours votre code d'origine, vous pouvez utiliser une mise à jour de vecteur conditionnel ( https://code.kx.com/q/ref/vector-conditional/ ) xxx

Les autres solutions fournies obtiennent le même objectif et de manière beaucoup plus directe, Donc, je recommanderais d'utiliser un de ceux-ci.


0 commentaires