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:https://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.