Du kan lägga till en beräknad kolumn i tabellen som konverterar dessa strängar till datum när din diskriminator har ett specifikt värde (här har jag precis använt 'date'
).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Om du har tidsinformation, date
bör vara datetime
i CONVERT()
funktion.
Även 101
är en stilkod som indikerar ett förväntat format på MM/dd/yyyy
. Om du har något annat, se detta:http://msdn.microsoft .com/en-us/library/ms187928.aspx
, men kom ihåg att om du använder en stil under 100 kommer ditt uttryck att betraktas som icke-deterministiskt och du kan inte göra din beräknade kolumn PERSISTED
, så omvandlingarna kommer att göras direkt med varje fråga (det vill du inte).
Den beräknade kolumnen kommer att uppdatera sig själv när radvärdena ändras; annars är värdena kvarstående och frågebara precis som i alla andra kolumner. Inga utlösare krävs.