Puede agregar una columna calculada a la tabla que convertirá esas cadenas en fechas cuando su discriminador tenga un valor específico (aquí acabo de usar 'date'
).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Si tiene información de tiempo, entonces date
debe ser datetime
en el CONVERT()
función.
Además, el 101
es un código de estilo que indica un formato esperado de MM/dd/yyyy
. Si tiene algo diferente, consulte esto:http://msdn.microsoft .com/en-us/library/ms187928.aspx
, pero tenga en cuenta que si usa un estilo por debajo de 100, su expresión se considerará no determinista y no podrá hacer que su columna calculada PERSISTED
, por lo que las conversiones se realizarán sobre la marcha con cada consulta (no quieres eso).
La columna calculada se actualizará cuando cambien los valores de la fila; de lo contrario, los valores persisten y se pueden consultar como en cualquier otra columna. No se requieren disparadores.