2016-11-18 99 views
-1

我需要獲取人員完成任務的每日時間表。如果給定日期在範圍內,Oracle會查找記錄

在我的數據庫中的數據存儲這樣

sno | start_date_time  | end_date_time  | 
--------------------------------------------------- 
1 |06-10-2016 09:30:00 | 06-10-2016 17:00:00 | 
2 |12-10-2016 08:00:00 | 15-10-2016 13:00:00 | 

我的問題是,如果我給例如14-10-2016的日期我想獲得第二個記錄。

我不知道如何查詢它自定的日期不屬於start_date_timeend_date_time

是否有可能做到這一點在Oracle?

+0

你什麼意思通過比較日期(與時間的天沒有分量)以日期時間做?如果輸入是12-10-2016,那麼它會落在第二行範圍內嗎? (如果是這樣,爲什麼?如果不是,爲什麼不?) – mathguy

回答

0

嘗試between

select * from your_table 
    where your_date between start_date_time and end_date_time 

例子:

select * from (
    select '2016-01-05' as t1, '2016-02-05' as t2 
    union all 
    select '2016-05-05' as t1, '2016-08-05' as t2 
) a 
    where '2016-02-01' between t1 and t2 

t1   t2 
2016-01-05 2016-02-05 

當然這也適用不僅爲日期,但也爲時間戳。

請記住,比較日期時,時刻日期被鑄成一個 時間戳這樣的「2016年1月1日」 - >「2016年1月1日00:00:00」

0

通常開始日期和結束日期允許空值,從between在PhillipsD回答因此除了你可能還需要nvl

select * from your_table 
where your_date between nvl(start_date_time, your_date) and nvl(end_date_time, your_date) 
+0

這是一個很好的評論! – PhillipD

相關問題