Bạn có thể thêm một cột được tính toán vào bảng sẽ chuyển đổi các chuỗi đó thành ngày khi dấu phân biệt của bạn có một giá trị cụ thể (ở đây tôi vừa sử dụng 'date'
).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Nếu bạn có thông tin thời gian, thì date
phải là datetime
trong CONVERT()
chức năng.
Ngoài ra, 101
là mã kiểu cho biết định dạng dự kiến là MM/dd/yyyy
. Nếu bạn có điều gì đó khác, hãy tham khảo phần này: http://msdn.microsoft .com / en-us / library / ms187928.aspx
, nhưng hãy nhớ rằng nếu bạn sử dụng kiểu dưới 100 thì biểu thức của bạn sẽ được coi là không xác định và bạn không thể đặt cột được tính toán của mình PERSISTED
, do đó, chuyển đổi sẽ được thực hiện nhanh chóng với mỗi truy vấn (bạn không muốn điều đó).
Cột được tính sẽ tự cập nhật khi giá trị hàng thay đổi; nếu không, các giá trị vẫn tồn tại và có thể truy vấn giống như trong bất kỳ cột nào khác. Không cần trình kích hoạt.