Đừng làm vậy! Không sử dụng chuỗi thay vì ngày tháng và không sử dụng định dạng ngày tháng hoặc ngày giờ theo văn hóa cụ thể, đó là một công thức dẫn đến thảm họa.
SQL Server không có "định dạng ngày tháng", chỉ định dạng nó sử dụng để chuyển đổi ngày tháng sang và từ chuỗi. Một trong số chúng là mặc định, được kiểm soát bởi đối chiếu của máy chủ. Bạn không thể giả định cũng như không nên phụ thuộc vào một đối chiếu cụ thể, vì vậy bạn nên tránh chuyển đổi bất cứ khi nào có thể. Hơn nữa, việc chuyển một giá trị chuỗi có thể ngăn SQL Server sử dụng chỉ mục trên các cột ngày tháng vì nó sẽ phải chuyển đổi chuỗi thành kiểu cột bên dưới.
Việc chuyển ngày dưới dạng các biến hoặc tham số được nhập ngày sẽ dễ dàng và an toàn hơn rất nhiều. Bạn tránh được toàn bộ sự lộn xộn chuyển đổi theo cách này, đến và đi và tránh các cuộc tấn công đưa vào SQL.
Không có lý do gì để chuyển chuỗi thay vì ngày đến máy chủ. Tất cả các máy khách SQL Server (bao gồm cả ADO.NET) đều cho phép bạn thực thi các truy vấn được tham số hóa. Các ORM như NHibernate và Entity Framework cũng tạo ra các truy vấn được tham số hóa cho các cột được định kiểu ngày tháng.
Bất cứ khi nào bạn cần tạo một chuỗi ký tự, hãy sử dụng một trong các định dạng bất biến như 20140913
hoặc 2012-11-07T18:26:20
Bạn có thể đọc thêm về nó tại Viết Tuyên bố T-SQL Quốc tế