优质回答 回答者:PzeroO

oracle date等类型是带时间部分的,所以你这个2011-07-05 只是相当于2011-07-05 00:00:00这个时刻,按你的写法大于这个时刻的是不会删除的。如果你确实要删除2011-07-05的建议你用以下写法:

delete from jf_syslog where inputtime >=date'2011-07-01' and nputtime

如果不担心2011-07-06 00:00:00的也可以

delete from jf_syslog where inputtime between date'2011-07-01' and date'2011-07-06'

如果效率可以接受,可以先转换成字符串

delete from jf_syslog where to_char(inputtime,'yyyymmdd') between '20110701' and '20110705'

你可以考虑连接上一个固定的字符串这样的,但是因为时间上是没有24:00:00的,所以还是会有问题的,不如直接在日期上加一天用<

-----------------------------------------------------------------

回答者:Ashic

报错着2个条件?这句话没看懂。。。

你可以用IN

delete from jf_syslog where inputtime IN ('2011-07-01' ,'2011-07-02','2011-07-03','2011-07-04','2011-07-05' )

如果这样麻烦你可以把你的语句改成delete from jf_syslog where inputtime between '2011-07-01' and '2011-07-06‘

-----------------------------------------------------------------

回答者:大地飞鹰

时间格式的比较可以转化成为字符格式进行比较处理,若 inputtime 为时间格式类型上面就可以如此处理:delete from jf_syslog where to_char(inputtime,'YYYY-MM-DD') >= '2011-07-01' and to_char(inputtime,'YYYY-MM-DD') <= '2011-07-05';

-----------------------------------------------------------------

回答者:25416

你那个字段不是日期格式的

因为没有写秒,所以默认后面那个7月5日就是 20110705000000 也就是零时零分零秒

所以你吧这个精确到秒就好了

-----------------------------------------------------------------

回答者:majorllen

delete from jf_syslog where to_date(inputtime,'yyyy-mm-dd') between to_date('2011-07-01','yyyy-mm-dd') and to_date('2011-07-05' ,'yyyy-mm-dd')

测试通过

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐