在PL/SQL(oracle)中按天查询

在PL/SQL(oracle)中按天查询,oracle,date-arithmetic,Oracle,Date Arithmetic,我正在从数据库查询: select * from database where id = 12345 我有几天的时间,它等于 2010年3月4日上午9:16:59 但如果我加上 日期=截止日期('2010年4月3日','DD/MM/YYYY') 给我 select * from database where id = 12345 and date = to_date('03/04/2010','DD/MM/YYYY') 我一无所有地回来了 有什么建议吗? 顺便说一句,我知道有一个时间在那里

我正在从数据库查询:

select * from database where id = 12345
我有几天的时间,它等于 2010年3月4日上午9:16:59

但如果我加上 日期=截止日期('2010年4月3日','DD/MM/YYYY')

给我

select * from database where id = 12345
and date = to_date('03/04/2010','DD/MM/YYYY') 
我一无所有地回来了

有什么建议吗? 顺便说一句,我知道有一个时间在那里,但我不知道如何比较仅仅基于一天

其中id=12345
 WHERE id = 12345
   AND date >= TO_DATE('03/04/2010', 'DD/MM/YYYY')
   AND date <  TO_DATE('03/04/2010', 'DD/MM/YYYY') + INTERVAL '1' DAY
日期>=截止日期('2010年4月3日','DD/MM/YYYY') 日期<截止日期('03/04/2010','DD/MM/YYYY')+间隔'1'天
其中id=12345
日期>=截止日期('2010年4月3日','DD/MM/YYYY')
日期<截止日期('03/04/2010','DD/MM/YYYY')+间隔'1'天

这是因为在创建日期时,您隐式地将时间设置为0:00:00,并且由于0:00:00不等于9:16:59,因此无法返回日期

要让Oracle忽略时间部分,只需执行以下操作:

WHERE id = 12345
  AND trunc(date) = to_date('03/04/2010', 'DD/MM/YYYY')

这是因为当您创建日期时,您隐式地将时间设置为0:00:00,并且由于0:00:00不等于9:16:59,您将无法返回日期

要让Oracle忽略时间部分,只需执行以下操作:

WHERE id = 12345
  AND trunc(date) = to_date('03/04/2010', 'DD/MM/YYYY')

这是一种奇怪的回答方式。。。但这对我不起作用?我还没有看到+1,数据库怎么知道你想增加一天?@Kevin仍然没有给出结果?我忘了包括你的身份证条款。reg+1:oracle计算日期类型始终以天为单位。但如果您愿意,您也可以使用+INVERVAL'1'天。我已将我的id作为select*from表进行查询,其中id=123,日期>=to_date('03/03/2010','DD/MM/YYYY')和日期=to_date('03/03/2010','DD/MM/YYYY')和日期