Você pode adicionar uma coluna computada à tabela que converterá essas strings em datas quando seu discriminador tiver um valor específico (aqui acabei de usar
'date'
). ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Se você tiver informações de tempo, então
date
deve ser datetime
no CONVERT()
função. Além disso, o
101
é um código de estilo que indica um formato esperado de MM/dd/yyyy
. Se você tiver algo diferente, consulte isto:http://msdn.microsoft .com/en-us/library/ms187928.aspx
, mas lembre-se de que, se você usar um estilo abaixo de 100, sua expressão será considerada não determinística e você não poderá tornar sua coluna calculada PERSISTED
, então as conversões serão feitas dinamicamente com cada consulta (você não quer isso). A coluna computada se atualizará quando os valores da linha forem alterados; caso contrário, os valores são persistidos e podem ser consultados como em qualquer outra coluna. Não são necessários gatilhos.