我有一张这样的表
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 :(得分: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)
答案 1 :(得分: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') )
答案 2 :(得分: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 )