TSQL: дата между запросом - время игнорирования - PullRequest
10 голосов
/ 12 декабря 2011

Я пытаюсь сделать запрос между 2 датами. Я хотел бы сделать это, не беспокоясь о времени. Когда пользователь вводит 2 даты, по которым он хочет выполнить поиск, выбор времени не производится. Это означает, что даты, которые они вводят, по умолчанию равны 12:00.

Даты в таблице действительно имеют время. Я просто хотел бы игнорировать все время вместе, поэтому поиск возвращает любые записи из указанного диапазона дат.

Вот мой SQL:

TheDate BETWEEN @EnteredBeginDate AND @EnteredEndDate

Поэтому, когда пользователь выполняет поиск в диапазоне между 6 августа 2009 г. и 9 сентября 2009 г., я хочу вернуть записи:

8/6/2009 11:33:02 AM
8/6/2009 11:39:17 AM
9/9/2009 8:21:30 AM

Что происходит сейчас, я только вернусь:

8/6/2009 11:33:02 AM
8/6/2009 11:39:17 AM

Может кто-нибудь порекомендует лучший способ сделать это в SQL? Я знаю, как это сделать в C #.

Ответы [ 5 ]

10 голосов
/ 12 декабря 2011

Просто используйте DATEADD в качестве конечной даты, чтобы установить ее в полночь в следующий день ...

TheDate BETWEEN @EnteredBeginDate AND DATEADD(day, 1, @EnteredEndDate)

Если вы хотите быть очень точным, вы можете вычесть секунду или миллисекунду из этого, чтобы сделать 11:59:59 на указанную вами дату:

TheDate BETWEEN @EnteredBeginDate AND DATEADD(second, -1, (DATEADD(day, 1, @EnteredEndDate)))

7 голосов
/ 12 декабря 2011

Если вы используете SQL Server 2008 или 2008 R2 , вы можете использовать новый тип данных DATE:

TheDate BETWEEN CAST(@EnteredBeginDate AS DATE) AND CAST(@EnteredEndDate AS DATE)

, который удаляетчасть времени и выглядит только на дату

3 голосов
/ 13 декабря 2011

Если вы используете SQL Server 2008, сделайте следующее:

TheDate BETWEEN cast(@EnteredBeginDate as date) AND cast(@EnteredEndDate as date)
1 голос
/ 12 декабря 2011
TheDate BETWEEN @EnteredBeginDate AND dateadd(day, 1, @EnteredEndDate)
0 голосов
/ 12 декабря 2011

Если в SQL Server будет передана только дата, время будет равно 12:00. Итак, конечная дата в предложении между: 9/9/2009 12:00. Просто добавьте день или измените дату, переданную в запросе, чтобы указать правильное время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...