2016-02-22 3 views
0

У меня есть таблица, как этотRetreveing ​​список даты из базы данных Oracle

Start_Date      End_Date 

21-02-2016 11:04:41    23-02-2016 11:04:41 
21-02-2016 14:03:29    25-02-2016 14:03:29 
22-02-2016 14:03:29    25-02-2016 14:03:29 

Если вход 21-Feb-2016 то я хочу, чтобы извлечь все строки, если данный вход падает между Start_Date и End_Date. В этом случае выход должен быть

Output(truncating the time part) 
Start_Date       End_Date 
21-02-2016       23-02-2016 
21-02-2016       25-02-2016 

Я пробовал нижеследующий запрос, но каким-то образом он не дал мне требуемого результата.

Select Start_Date,End_Date from TEST where Start_Date<=21-02-2016 and End_Date>=23-02-2016. 

Может кто-нибудь сказать мне, где я сделал ошибку и обеспечить правильное решение для него

+0

Каких данных '' start_date' и end_date'? Сроки? – Mureinik

ответ

0

Если ваши поля таблицы в формате даты, вам необходимо что-то вроде:

select * 
from test 
where to_date('21-02-2016', 'dd-mm-yyyy') between trunc(start_date) and trunc(end_date) 

В противном случае , Если они хранятся в виде строк (и я надеюсь, что нет), вам необходимо:

типа
select * 
from test 
where to_date('21-02-2016', 'dd-mm-yyyy') between 
     trunc(to_date(start_date,'dd-mm-yyyy hh24:mi:ss')) and 
     trunc(to_date(end_date, 'dd-mm-yyyy hh24:mi:ss')) 
+0

Спасибо, что сработало – Abhishek

0

Может быть, вы должны также использовать функцию Trunc фильтровать даты

Select Start_Date,End_Date from TEST 
where to_date('21-02-2016','dd-mm-yyyy') between trunc(start_date) and trunc(end_date) 
0
SELECT DISTINCT 
     TRUNC(start_date) AS truncated_start_date, 
     TRUNC(end_date) AS truncated_end_date 
FROM your_table 
WHERE DATE '2016-02-21' BETWEEN TRUNC(start_date) AND TRUNC(end_date)