Nếu bạn phải sử dụng định dạng ngày dựa trên chuỗi, bạn nên chọn một định dạng an toàn và hoạt động trong mọi phiên bản SQL Server, bất kể định dạng ngày, ngôn ngữ và cài đặt khu vực.
Định dạng đó được gọi là ISO-8601 định dạng và đó là
YYYYMMDD (note: **NO** dashes!)
hoặc
YYYY-MM-DDTHH:MM:SSS
trong một DATETIME
cột.
Vì vậy, thay vì
Convert(datetime, '28/11/2012', 103)
bạn nên sử dụng
CAST('20121128' AS DATETIME)
và sau đó bạn sẽ ổn.
Nếu bạn đang sử dụng SQL Server 2008 - bạn cũng có thể xem xét bằng cách sử dụng DATE
(thay vì DATETIME
) cho những trường hợp bạn chỉ cần ngày (không cần phần thời gian). Điều đó thậm chí còn dễ dàng hơn so với việc sử dụng DATETIME
và luôn có phần thời gian là 00:00:00