Bu çok eskidir, ancak tarihlerle ilgili yaşadığım birçok deneyim göz önüne alındığında, bunu dikkate almak isteyebilirsiniz: İnsanlar farklı bölgesel ayarları kullanır, örneğin, bazı insanlar (ve bölgesel ayarlara bağlı olarak bazı veritabanları / bilgisayarlar) bunu okuyabilir Tarih 11/12/2016 11 Aralık 2016 veya 12 Kasım 2016 olarak. Daha da fazlası, MySQL veritabanına sağlanan 16/11/12 dahili olarak 12 Kasım 2016'ya dönüştürülürken, İngiltere bölgesel ayar bilgisayarında çalışan Access veritabanı yorumlanır ve 16 Kasım 2012 olarak saklayın.
Bu nedenle, tarihler ve veritabanları ile etkileşime gireceğim zaman politikamı netleştirdim. Bu yüzden her zaman sorgularımı ve programlama kodlarımı aşağıdaki gibi tedarik ederim:
SELECT FirstName FROM Students WHERE DoB >= '11 Dec 2016';
Ayrıca Access'in # kabul edeceğini unutmayın:
SELECT FirstName FROM Students WHERE DoB >= #11 Dec 2016#;
ancak MS SQL sunucusu çalışmaz, bu yüzden her zaman her iki veritabanının da kabul ettiği gibi "" "kullanıyorum.
Ve bu tarihi koddaki bir değişkenden alırken, sonucu her zaman dizeye aşağıdaki gibi dönüştürürüm:
"SELECT FirstName FROM Students WHERE DoB >= " & myDate.ToString("d MMM yyyy")
Bunu yazıyorum çünkü bazen bazı programcılar doğal dönüşümü algılayacak kadar hevesli olmayabilir. Tarihler <13 için hata olmayacak, sadece farklı sonuçlar olacak!
Sorulan soruya gelince, son tarihe bir gün ekleyin ve karşılaştırmayı aşağıdaki gibi yapın:
dated >= '11 Nov 2016' AND dated < '15 Nov 2016'