Sử dụng tham số DateTime là cách tốt nhất. Tuy nhiên, nếu bạn vẫn muốn vượt qua một DateTime như một chuỗi, thì CAST không cần thiết với điều kiện là một định dạng thuyết bất khả tri ngôn ngữ được sử dụng.
ví dụ:
Cho một bảng được tạo như:
create table t1 (id int, EndDate DATETIME)
insert t1 (id, EndDate) values (1, GETDATE())
Sau đây nên luôn luôn làm việc:
update t1 set EndDate = '20100525' where id = 1 -- YYYYMMDD is language agnostic
Sau đây sẽ làm việc:
SET LANGUAGE us_english
update t1 set EndDate = '2010-05-25' where id = 1
Tuy nhiên, điều này sẽ không:
SET LANGUAGE british
update t1 set EndDate = '2010-05-25' where id = 1
Điều này là do 'YYYY-MM-DD' không phải là định dạng không phụ thuộc vào ngôn ngữ (từ quan điểm của máy chủ SQL).
Định dạng ISO 'YYYY-MM-DDThh: mm: ss' cũng là ngôn ngữ bất khả tri và hữu ích khi bạn cần vượt qua thời gian khác 0. Thông tin
thêm: http://www.karaszi.com/SQLServer/info_datetime.asp
Nguồn
2010-06-30 02:07:29
là ngày tên cột thực tế? – Gratzy
không thực sự, nó là EndDate, nhưng tôi chỉ rút ngắn nó thành Date. – Xaisoft
bạn có gặp lỗi hoặc không có kết quả? – Gratzy