Vous pouvez ajouter une colonne calculée à la table qui convertira ces chaînes en dates lorsque votre discriminateur a une valeur spécifique (ici, je viens d'utiliser 'date'
).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Si vous avez des informations sur l'heure, alors date
devrait être datetime
dans le CONVERT()
fonction.
Aussi, le 101
est un code de style indiquant un format attendu de MM/dd/yyyy
. Si vous avez quelque chose de différent, reportez-vous à ceci :http://msdn.microsoft .com/en-us/library/ms187928.aspx
, mais gardez à l'esprit que si vous utilisez un style inférieur à 100, votre expression sera considérée comme non déterministe et vous ne pourrez pas rendre votre colonne calculée PERSISTED
, de sorte que les conversions seront effectuées à la volée avec chaque requête (vous ne voulez pas cela).
La colonne calculée se met à jour lorsque les valeurs de ligne changent ; sinon, les valeurs sont persistantes et interrogeables comme dans n'importe quelle autre colonne. Aucun déclencheur requis.