David_Wimbley
Если вы опубликуете свою схему и некоторые примеры данных, это поможет. Не видя вашей базы данных, к которой у меня нет доступа, я делаю некоторые вероятные предположения о первопричине.
Но чтобы уточнить, я поделюсь примером, который вы можете запустить в sql server (к сожалению, у меня нет доступа).
Этот пример больше подходит для того, чтобы показать проблему временных меток в вашем sql-запросе.
DECLARE @Dates TABLE
(
Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
DateExample DATETIME NULL
);
INSERT INTO @Dates ( DateExample ) VALUES ('2016-09-08 20:30:32.843')
INSERT INTO @Dates ( DateExample ) VALUES ('2016-09-08 19:00:32.843')
INSERT INTO @Dates ( DateExample ) VALUES ('2016-09-08 18:30:32.843')
INSERT INTO @Dates ( DateExample ) VALUES ('2016-09-08 16:00:32.843')
INSERT INTO @Dates ( DateExample ) VALUES ('2016-09-08 15:00:32.843')
INSERT INTO @Dates ( DateExample ) VALUES ('2016-09-08 14:30:32.843')
--This returns nothing due to the time stamps being midnight and the time stamps in the data being
SELECT * FROM @Dates WHERE DateExample BETWEEN '2016-09-08 00:00:00.000' AND '2016-09-08 00:00:00.000'
--Returns results because it converts dateexample to a date, which makes the timestamps midnight.
SELECT * FROM @Dates WHERE CAST(DateExample AS DATE) BETWEEN '2016-09-08 00:00:00.000' AND '2016-09-08 00:00:00.000'
Первый оператор select учитывает временные метки, и поскольку вы снимаете свое время с передаваемых дат , вы сравниваете дату в 12:00 утра с другими датами с отметкой времени, которая, вероятно, является причиной того, что у вас нет никаких возвращенных данных.
Другая проблема, которая может возникнуть, заключается в том, что вы преобразуете дату в строку, и это может плохо сочетаться с доступом.
Второй запрос преобразует столбец dateexample в date, который создает метку времени 12:00 утра и работает с этим запросом.
Учитывая, что T-SQL не очень хорошо конвертируется в MS Access, у вас есть 2 варианта
1) Убедитесь, что ваши даты в предложении BETWEEN включают временные метки, соответствующие критериям того, что вы ищете. Возможно, Вам потребуется добавить 00:00:00 и 24:59:59.59 к датам начала и окончания вашего заявления BETWEEN, чтобы получить все действительные данные.
2) я думаю, что MS Access может иметь функции, которые преобразуют строки в дату и, в свою очередь, снимают с нее отметку времени. У меня нет установленного MS access, поэтому я не могу проверить это, но я думаю, что это возможно из быстрого поиска google.
ms access CAST - поиск в Google[
^]
Опять же, у меня нет доступа к вашей базе данных, так что это может быть отключено. Если это так, то не стесняйтесь предоставить схему и прояснить свой вопрос.