Поиск между датами и временем в SQL Server 2008 - PullRequest
10 голосов
/ 17 марта 2010

Мне нужно искать между датами и временем.

Например, между date: 30/02/2007, time: 10:32 и date: 21/06/2008, time: 14:19

Какой самый простой запрос для этого?

Заранее спасибо.

Ответы [ 2 ]

16 голосов
/ 17 марта 2010

вы должны посмотреть форматы даты и времени, доступные в SQL Server: http://msdn.microsoft.com/en-us/library/ms187928.aspx

yyyy-mm-dd hh:mi - это то, что вы должны использовать:

попробовать:

SELECT
    *
    FROM Records
    WHERE DateCreated>='2007-02-30 10:32' AND DateCreated<='2008-06-21 14:19'

в приведенном выше запросе строки будут преобразованы в тип данных datetime, если DateCreated является столбцом datetime. и запрос будет работать.

Вы можете создавать локальные переменные типа данных datetime и использовать запрос, подобный следующему:

DECLARE @StartDate datetime, @EndDate datetime

SELECT @StartDate='2007-02-30 10:32', @EndDate='2008-06-21 14:19'

SELECT
    *
    FROM Records
    WHERE DateCreated>=@StartDate AND DateCreated<=@EndDate

Мне нравится использовать <, <=,> = или>, потому что он обеспечивает большую гибкость, чем BETWEEN, и заставляет задуматься о включении конечных точек или нет.

Еще одна вещь, которую следует учитывать, это получение всех данных за полный день:

DECLARE @StartDate datetime, @EndDate datetime

--set the days you want
SELECT @StartDate='2007-02-30 10:32', @EndDate='2008-06-21 14:19'

--remove the time
SELECT @StartDate=DATEADD(day,DATEDIFF(day,0,@StartDate),0), @EndDate=DATEADD(day,DATEDIFF(day,0,@EndDate),0)

--get everything on '2007-02-30' up to the end of the day on '2008-06-21'
SELECT
    *
    FROM Records
    WHERE DateCreated>=@StartDate AND DateCreated<@EndDate+1
5 голосов
/ 17 марта 2010

Попробуйте это:

SELECT
    *
FROM
    Records
WHERE
    DateCreated BETWEEN @Date1 AND @Date2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...