我需要获得人们完成的任务的每日安排。
我的数据库中的数据存储如下
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_time
或end_date_time
是否可以在oracle中执行此操作?
答案 0 :(得分: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-01-01' - > ' 2016-01-01 00:00:00'
答案 1 :(得分:0)
通常开始日期和结束日期都允许空值,因此除了PhillipsD答案中的between
之外,您可能还需要nvl
:
select * from your_table
where your_date between nvl(start_date_time, your_date) and nvl(end_date_time, your_date)