Это очень старый, но учитывая большой опыт, который я имел с датами, вы можете подумать об этом: люди используют разные региональные настройки, как таковые, некоторые люди (и некоторые базы данных / компьютеры, в зависимости от региональных настроек)может читать эту дату 11/12/2016 как 11 декабря 2016 года или 12 ноября 2016 года. Более того, 16/11/12, предоставленные для базы данных MySQL, будут внутренне преобразованы в 12 ноября 2016 года, в то время как база данных Access будет работать на компьютере с региональными настройками в Великобритании.будет интерпретировать и хранить его как 16 ноября 2012 года.
Поэтому я решил, что моя политика должна быть явной, когда я собираюсь взаимодействовать с датами и базами данных.Поэтому я всегда предоставляю свои запросы и программные коды следующим образом:
SELECT FirstName FROM Students WHERE DoB >= '11 Dec 2016';
Обратите также внимание, что Access будет принимать #, таким образом:
SELECT FirstName FROM Students WHERE DoB >= #11 Dec 2016#;
, но сервер MS SQL не будет, поэтому явсегда используйте «», как указано выше, что принимают обе базы данных.
И при получении этой даты из переменной в коде я всегда преобразовываю результат в строку следующим образом:
"SELECT FirstName FROM Students WHERE DoB >= " & myDate.ToString("d MMM yyyy")
IЯ пишу это, потому что я знаю, что иногда некоторые программисты могут быть недостаточно заинтересованы, чтобы обнаружить внутреннее преобразование.Для дат <13 ошибок не будет, только другие результаты! </p>
Что касается заданного вопроса, добавьте один день к последней дате и сделайте сравнение следующим образом:
dated >= '11 Nov 2016' AND dated < '15 Nov 2016'