Điều này rất lâu đời, nhưng với rất nhiều kinh nghiệm tôi đã có với ngày, bạn có thể muốn xem xét điều này: Mọi người sử dụng các cài đặt khu vực khác nhau, như vậy, một số người (và một số cơ sở dữ liệu / máy tính, tùy thuộc vào cài đặt khu vực) có thể đọc điều này ngày 11/12/2016 là ngày 11 tháng 12 năm 2016 hoặc ngày 12 tháng 11 năm 2016. Thậm chí, ngày 16/11/12 được cung cấp cho cơ sở dữ liệu MySQL sẽ được chuyển đổi nội bộ sang ngày 12 tháng 11 năm 2016, trong khi cơ sở dữ liệu Access chạy trên máy tính cài đặt khu vực ở Anh sẽ diễn giải và lưu trữ vào ngày 16 tháng 11 năm 2012.
Do đó, tôi đã biến chính sách của mình thành rõ ràng bất cứ khi nào tôi sẽ tương tác với ngày và cơ sở dữ liệu. Vì vậy, tôi luôn cung cấp các truy vấn và mã lập trình của mình như sau:
SELECT FirstName FROM Students WHERE DoB >= '11 Dec 2016';
Cũng lưu ý rằng Access sẽ chấp nhận #, do đó:
SELECT FirstName FROM Students WHERE DoB >= #11 Dec 2016#;
nhưng máy chủ MS SQL sẽ không, vì vậy tôi luôn sử dụng "'" như trên, cả hai cơ sở dữ liệu đều chấp nhận.
Và khi nhận được ngày đó từ một biến trong mã, tôi luôn chuyển đổi kết quả thành chuỗi như sau:
"SELECT FirstName FROM Students WHERE DoB >= " & myDate.ToString("d MMM yyyy")
Tôi viết thư này vì tôi biết đôi khi một số lập trình viên có thể không đủ nhạy bén để phát hiện chuyển đổi vốn có. Sẽ không có lỗi cho ngày <13, chỉ là kết quả khác nhau!
Đối với câu hỏi được hỏi, thêm một ngày vào ngày cuối cùng và thực hiện so sánh như sau:
dated >= '11 Nov 2016' AND dated < '15 Nov 2016'