Как мне запросить поле базы данных DateTime в определенном диапазоне?
Я использую SQL SERVER 2005
Код ошибки ниже
SELECT *
FROM TABLENAME
WHERE DateTime >= 12/04/2011 12:00:00 AM
AND DateTime <= 25/05/2011 3:53:04 AM
Обратите внимание, что мне нужно получить строки в определенном временном диапазоне. Пример, временной диапазон 10 минут.
В настоящее время SQL возвращает неверный синтаксис около «12». "
where date = 1/12/2011
, например, он будет появляться на работу, но на самом деле разделить 1/12/2011 и получить ноль, а затем обрабатывает ноль в качестве минимального возможного значения даты и времени.Ответы:
Вы пропустили знак одинарной кавычки:
SELECT * FROM TABLENAME WHERE DateTime >= '12/04/2011 12:00:00 AM' AND DateTime <= '25/05/2011 3:53:04 AM'
Также рекомендуется использовать формат ISO8601 YYYY-MM-DDThh: mm: ss.nnn [Z], так как он не будет зависеть от местной культуры вашего сервера.
SELECT * FROM TABLENAME WHERE DateTime >= '2011-04-12T00:00:00.000' AND DateTime <= '2011-05-25T03:53:04.000'
источник
Вам нужны кавычки вокруг строки, которую вы пытаетесь выдать за дату, и вы также можете использовать BETWEEN здесь:
SELECT * FROM TABLENAME WHERE DateTime BETWEEN '04/12/2011 12:00:00 AM' AND '05/25/2011 3:53:04 AM'
См. Ответ на следующий вопрос, где приведены примеры явного преобразования строк в даты при указании формата:
Преобразование строки сервера sql в дату
источник
Это сработало для меня как в SQL Server 2005, так и в 2008 году:
SELECT * from TABLE WHERE FIELDNAME > {ts '2013-02-01 15:00:00.001'} AND FIELDNAME < {ts '2013-08-05 00:00:00.000'}
источник
Вы можете выполнить код ниже
SELECT Time FROM [TableName] where DATEPART(YYYY,[Time])='2018' and DATEPART(MM,[Time])='06' and DATEPART(DD,[Time])='14
источник
SELECT * FROM TABLENAME WHERE [DateTime] >= '2011-04-12 12:00:00 AM' AND [DateTime] <= '2011-05-25 3:35:04 AM'
Если это не сработает, напишите сценарий своей таблицы и разместите его здесь. это поможет нам быстро получить правильный ответ.
источник
select getdate() O/P ---- 2011-05-25 17:29:44.763 select convert(varchar(30),getdate(),131) >= '12/04/2011 12:00:00 AM' O/P --- 22/06/1432 5:29:44:763PM
источник
Другие уже сказали, что литералы даты в SQL Server требуют заключения в одинарные кавычки, но я хотел добавить, что вы можете решить проблему смешивания месяца / дня двумя способами (то есть проблема, когда 25 рассматривается как месяц, а 5 - как день):
Используйте явное
Convert(datetime, 'datevalue', style)
где style является одним из числовых кодов стиля, см. Приведение и преобразование . Параметр style предназначен не только для преобразования дат в строки, но и для определения того, как строки преобразуются в даты.Используйте независимый от региона формат для дат, хранящихся в виде строк. Я использую «ггггммдд чч: мм: сс», или рассмотрим формат ISO
yyyy-mm-ddThh:mi:ss.mmm
. На основе экспериментов НЕТ другой строки формата, не зависящей от языка. (Хотя я думаю, что вы можете указать часовой пояс в конце, см. Ссылку выше).источник
Откройте файл доступа, в который вы пытаетесь экспортировать данные SQL. Удалите все имеющиеся запросы. Каждый раз, когда вы запускаете мастер импорта SQL Server, даже в случае сбоя, он создает запрос в базе данных Access, который необходимо удалить, прежде чем вы сможете снова запустить мастер экспорта SQL.
источник