2013-09-25 3 views
-1

Таблица:получить данные между двумя столбцами даты

 
pmComm  validFrom validTo 
6.00  2011-11-01 2012-01-24 
6.00  2012-01-09 2013-06-30 
9.00  2012-01-25 2012-03-31 
8.00  2012-04-01 2012-08-31 
5.00  2013-07-01 2013-09-30 
7.50  2013-10-01 2013-12-31 
15.00  2014-01-01 2035-12-31 

У меня есть таблица, и когда я ищу данных между «2013-12-15» до 2031-05-15, я хотите результат, как этот:

результат:

 
pmComm  validFrom validTo 
7.50  2013-12-15 2013-12-31 
15.00  2014-01-01 2031-05-15 

Какой должен быть SQL-запрос для получения желаемых результатов между данными диапазона?

+2

'Я хочу привести как this' --->' Мне нужно, что code' ???? –

ответ

1

Ниже приводится нижний предел диапазона дат validFrom, если validFrom не входит в диапазон, но validTo есть.

Аналогичным образом он выдает верхний предел диапазона дат как validTo, когда validFrom находится в пределах диапазона, но validTo - нет.

SELECT 
    pmComm, 

    CASE 
    WHEN validFrom < '2013-12-15' THEN '2013-12-15' 
    ELSE validFrom 
    END AS validFrom, 

    CASE 
    WHEN validTo > '2031-05-15' THEN '2031-05-15' 
    ELSE validTo 
    END AS validTo 


FROM Table 


WHERE (validfrom BETWEEN '2013-12-15' AND '2031-05-15' 
    OR validto BETWEEN '2013-12-15' AND '2031-05-15') 
1

Вы должны использовать между условием, которым я верю, вы можете найти здесь больше. http://www.techonthenet.com/sql/between.php

И запрос будет, вероятно, выглядеть следующим образом

SELECT pmComm, validFrom, validTo 
FROM YOUR_TABLE 
WHERE (validFrom BETWEEN '2013-12-15' AND '2031-05-15') AND (validTo BETWEEN '2013-12-15' AND '2031-05-15'); 
0

Я не совсем уверен, что вы пытаетесь достичь, но

SELECT * FROM table WHERE validFrom >= '2013-12-15' AND validTo <= '2031-05-15' 

может сделать эту работу.

+0

Фактически я хочу, чтобы те записи, которые соответствуют обоим полям, а также если они сопоставляются в любом столбце, затем заменяйте на данные поиска, например, данные 2013-12-15 'до 2031-05-15, соответствующие таблице записей «7.50» «2013- 10-01 "" 2013-12-31 " – anil

0
SELECT * 
FROM Table 
WHERE validTo BETWEEN '2013-12-15' AND '2031-05-15' 
Смежные вопросы