Подтвердить что ты не робот

Простой SQL-запрос DateTime

Как мне задать поле базы данных 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".

4b9b3361

Ответ 1

Вы пропустили знак одиночной кавычки:

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'

Ответ 2

Вам нужны кавычки вокруг строки, которую вы пытаетесь передать в качестве даты, и здесь вы также можете использовать МЕЖДУ:

 SELECT *
   FROM TABLENAME
  WHERE DateTime BETWEEN '04/12/2011 12:00:00 AM' AND '05/25/2011 3:53:04 AM'

См. ответ на следующий вопрос для примеров того, как явным образом преобразовывать строки в даты при указании формата:

Преобразование строки Sql Server в дату

Ответ 3

Это работало для меня как в 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'}

Ответ 4

Другие уже сказали, что литералы даты в SQL Server требуют окружения одинарными кавычками, но я хотел добавить, что вы можете решить проблему смешивания месяца/дня двумя способами (то есть, проблема, когда 25 рассматривается как месяц и 5 в день):

  • Используйте явный Convert(datetime, 'datevalue', style), где style является одним из числовых кодов стиля, см. Вставить и преобразовать. Параметр стиля предназначен не только для преобразования дат в строки, но также для определения того, как строки анализируются по датам.

  • Используйте независимый от региона формат для дат, хранящихся в виде строк. Тот, который я использую, - "yyyymmdd hh: mm: ss" или рассматривает формат ISO, yyyy-mm-ddThh:mi:ss.mmm. На основе экспериментов нет другой строки, не содержащей языка. (Хотя я думаю, что вы можете включить часовой пояс в конце, см. Выше ссылку).

Ответ 5

Откройте файл доступа, к которому вы пытаетесь экспортировать данные SQL. Удалите все Запросы, которые есть. Каждый раз, когда вы запускаете мастер импорта SQL Server, даже если он терпит неудачу, он создает запрос в базе данных доступа, который необходимо удалить, прежде чем вы сможете снова запустить мастер экспорта SQL.

Ответ 6

SELECT * 
  FROM TABLENAME 
 WHERE [DateTime] >= '2011-04-12 12:00:00 AM'
   AND [DateTime] <= '2011-05-25 3:35:04 AM'

Если это не сработает, script внесите свой стол и опубликуйте его здесь. это поможет нам быстро получить правильный ответ.

Ответ 7

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