Sql Query с диапазоном дат - PullRequest
2 голосов
/ 20 марта 2012

Я пытаюсь получить записи из таблицы, используя приведенный ниже SQL-запрос.

SELECT Code,Description FROM Table
WHERE ID= 1 AND FromDate >= '2010-02-14' AND ToDate <= '2012-03-14'

Несмотря на наличие записей на эту дату, запрос ничего не возвращает.

ID HID HCode HDescription FromDate            ToDate 
-------------------------------------------------------------------
1  3   H8    New Year     2012-03-14 12:38:00 2012-03-14 12:38:00

Пожалуйста, дайте мне подходящее решение.Спасибо за ваше время !!

Ответы [ 5 ]

2 голосов
/ 20 марта 2012

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

declare @dayAfter datetime     --let take 1 day after

set @dayAfter = DateAdd(day,1,'20120314')

SELECT Code,Description FROM Table
WHERE ID= 1 AND 
FromDate >= '20100214' AND 
ToDate <  DateAdd(day, DateDiff(day, 0, @dayAfter ), 0)

p.s:

DateAdd(day, DateDiff(day, 0, @dayAfter ), 0) сбросит время на 00:00

так что вам нужно desired EndTime < begining of the day after

0 голосов
/ 15 июля 2016
SELECT *
 FROM  table
 WHERE year_date BETWEEN FromDate AND ToDate
0 голосов
/ 20 марта 2012

Вы выбираете данные из ragne

FromDate >= '2010-02-14 00:00:0000' AND ToDate <= '2012-03-14 00:00:0000'

Вы должны сделать так:

FromDate >= '2010-02-14' AND ToDate < '2012-03-15'
0 голосов
/ 20 марта 2012

Попробуйте с помощью следующего запроса, это определенно решит вашу проблему ....

SELECT Code,Description FROM Table
   WHERE ID= 1 AND
         CONVERT(VARCHAR(10), FromDate, 101)>= CONVERT(VARCHAR(10),CAST('2010-02-14' AS DATETIME),101) AND 
         CONVERT(VARCHAR(10), ToDate, 101)<= CONVERT(VARCHAR(10),CAST('2012-03-14' AS DATETIME),101) ;
0 голосов
/ 20 марта 2012

Если вы выбираете данные между FromDate и ToDate, тогда удаляйте ID = 1. Так как в этом случае выбирается запись с ID = 1, и FromDate и ToDate проверяют эту запись.

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