Możesz dodać do tabeli kolumnę obliczoną, która przekonwertuje te ciągi na daty, gdy dyskryminator ma określoną wartość (tutaj właśnie użyłem 'date'
).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Jeśli masz informacje o czasie, to date
powinno być datetime
w CONVERT()
funkcja.
Również 101
to kod stylu wskazujący oczekiwany format MM/dd/yyyy
. Jeśli masz coś innego, zapoznaj się z tym:http://msdn.microsoft .com/en-us/library/ms187928.aspx
, ale pamiętaj, że jeśli użyjesz stylu poniżej 100, Twoje wyrażenie zostanie uznane za niedeterministyczne i nie możesz ustawić kolumny obliczonej PERSISTED
, więc konwersje będą wykonywane na bieżąco z każdym zapytaniem (nie chcesz).
Obliczona kolumna zaktualizuje się, gdy zmienią się wartości wierszy; w przeciwnym razie wartości są utrwalane i podlegają zapytaniom, tak jak w każdej innej kolumnie. Nie są wymagane żadne wyzwalacze.