Как получить значение для двух дат - PullRequest
1 голос
/ 03 января 2012

Я хочу выбрать значение между датами

Table1

Code Period  Datefrom   dateto     Value
001  07/2011 01/07/2009 10/07/2009 100
211  07/2009 01/07/2009 05/07/2009 200

Из приведенной выше таблицы я хочу проверить дату между datefrom и dateto, если дата находится в интервале или равна date от dateto означает, что она должна вернуть значение empcode

Пробный запрос

SELECT Value
FROM table1
Where Period = '07/2009'
and Code = '211'
and Cast('02/07/2009' as Datetime) between datefrom and dateto

Ожидаемый результат:

code value
211  200

Приведенный выше запрос показывает нулевое значение, он должен возвращать 200.

Что не так в моем запросе?

Ответы [ 3 ]

3 голосов
/ 03 января 2012

Ваш Cast('02/07/2009' as Datetime) приносит вам 7 февраля по умолчанию используйте это вместо

SELECT Code, Value 
FROM table1 
Where 
    Period = '07/2009' 
and Code = '211'  
and CONVERT(DATETIME, '02/07/2009', 103) between datefrom and dateto

НО

Возможно, вам придется преобразовать datefrom и dateto столбцы , если они относятся к типу varchar.

0 голосов
/ 03 января 2012

Вы можете использовать запрос ниже

SELECT   code
       , value 
FROM   table1 
WHERE  period = '07/2009' 
AND    code   = '211' 
AND    convert(datetime,'02/07/2009',101) 
       between 
       convert(datetime,datefrom,101) and convert(datetime,dateto,101)
0 голосов
/ 03 января 2012
 SELECT Code, Value
 from table1 
 where Period = '07/2009' 
 and Code = '211'
 and DateFrom <='02/07/2009'
 and DateTo >= '02/07/2009'
...