Можете да добавите изчислена колона към таблицата, която ще преобразува тези низове в дати, когато вашият дискриминатор има конкретна стойност (тук току-що използвах 'date' ).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Ако имате информация за часа, тогава date трябва да бъде datetime в CONVERT() функция.
Освен това 101 е стилов код, указващ очакван формат MM/dd/yyyy . Ако имате нещо различно, вижте това:https://msdn.microsoft .com/en-us/library/ms187928.aspx
, но имайте предвид, че ако използвате стил под 100, вашият израз ще се счита за недетерминистичен и не можете да направите вашата изчислена колона PERSISTED , така че реализациите ще се извършват в движение с всяка заявка (не искате това).
Изчислената колона ще се актуализира, когато стойностите на реда се променят; в противен случай стойностите се запазват и могат да се правят заявки точно както във всяка друга колона. Не са необходими задействания.