如何在sqldeveloper中过滤数据库的datetime

如何在sqldeveloper中过滤数据库的datetime,sql,oracle,date,datetime,timestamp,Sql,Oracle,Date,Datetime,Timestamp,我需要过滤一个特定的表,精确到秒,时间段。 数据类型是时间戳6 select * from table where trunc(load_date)<=to_date ('10.08.15 15:10:58', 'dd.mm.yy hh24:mi:ss') and trunc(load_date)>=to_date ('10.08.15 15:11:08', 'dd.mm.yy hh24:mi:ss'); 这个很好用。但是,对结果嗤之以鼻并不是很有效 我没有得到任何结果,但没有错误

我需要过滤一个特定的表,精确到秒,时间段。 数据类型是时间戳6

select *
from table
where trunc(load_date)<=to_date ('10.08.15 15:10:58', 'dd.mm.yy hh24:mi:ss')
and trunc(load_date)>=to_date ('10.08.15 15:11:08', 'dd.mm.yy hh24:mi:ss');
这个很好用。但是,对结果嗤之以鼻并不是很有效

我没有得到任何结果,但没有错误消息。 但至少有一个结果。我甚至尝试随机交换这些数据,因为我觉得我疯了。

执行truncload_date会将该值当天的时间截短到午夜,并转换为日期,而不是时间戳:

select systimestamp, trunc(systimestamp) from dual;

SYSTIMESTAMP                         TRUNC(SYSTIMESTAMP)
------------------------------------ -------------------
2019-09-10 12:53:54.400453000 +01:00 2019-09-10 00:00:00
一旦您缩短了加载日期,午夜时间就不在您的目标范围内。在您的第二个版本中,您将截断的值与午夜的时间进行比较,因此它现在找到了匹配项-但它可能在10秒窗口中,也可能不在10秒窗口中-无法判断,并且可能会阻止使用该列上的索引-这可能是它速度较慢的原因

不要截断;我将与相同的数据类型进行比较:

select *
from table
where load_date >= to_timestamp ('10.08.15 15:10:58', 'dd.mm.yy hh24:mi:ss')
and load_date <= to_timestamp ('10.08.15 15:11:08', 'dd.mm.yy hh24:mi:ss');
或者最好使用4位数的年份:

select *
from table
where load_date >= to_timestamp ('10.08.2015 15:10:58', 'dd.mm.yyyy hh24:mi:ss')
and load_date <= to_timestamp ('10.08.2015 15:11:08', 'dd.mm.yyyy hh24:mi:ss');
如果时间戳文字是固定值,甚至是时间戳文字:

select *
from table
where load_date >= timestamp '2015-08-10 15:10:58'
and load_date <= timestamp '2015-08-10 15:11:08';

还要检查您是否真的需要>=和=,好的,它与您的建议一起工作。我只是需要换一下电源。更多/更晚的时间需要D'oh,是的,我没有注意就从你的代码中复制了这些,对不起。在最后一句话中,我设法把它说对了!
select *
from table
where load_date >= timestamp '2015-08-10 15:10:58'
and load_date <= timestamp '2015-08-10 15:11:08';