Anda dapat menambahkan kolom yang dihitung ke tabel yang akan mengonversi string tersebut menjadi tanggal ketika diskriminator Anda memiliki nilai tertentu (di sini saya baru saja menggunakan 'date'
).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Jika Anda memiliki informasi waktu, maka date
seharusnya datetime
di CONVERT()
fungsi.
Juga, 101
adalah kode gaya yang menunjukkan format yang diharapkan dari MM/dd/yyyy
. Jika Anda memiliki sesuatu yang berbeda, lihat ini:http://msdn.microsoft. .com/en-us/library/ms187928.aspx
, tetapi perlu diingat bahwa jika Anda menggunakan gaya di bawah 100, ekspresi Anda akan dianggap non-deterministik dan Anda tidak dapat membuat kolom yang dihitung PERSISTED
, jadi konversi akan dilakukan dengan cepat dengan setiap kueri (Anda tidak menginginkannya).
Kolom yang dihitung akan memperbarui dirinya sendiri ketika nilai baris berubah; jika tidak, nilainya dipertahankan dan dapat ditanyakan seperti di kolom lainnya. Tidak diperlukan pemicu.