我想在我的桌子上找到这样写的日期“20140205101309”我试图通过多种方式获得,但我无法抓住它,所以如何修改我的查询来抓住它?
select * from my.DETAIL a where A.DATE
between to_DATE('YYYYMMDD hh24:mi:ss','28-dec-2013 12:00:00')
and to_date ('YYYYMMDD hh24:mi:ss','2-feb-2014 00:00:00');
提前谢谢
答案 0 :(得分:1)
在比较前将a.call_date设为日期:
select *
from operation.reject_detail a
where to_date(a.call_date, 'YYYYMMDDHHMISS') between
to_date('28-12-2013 12:00:00','DD-MM-YYYY HH24:MI:SS') and
to_date('02-02-2014 00:00:00','DD-MM-YYYY HH24:MI:SS' );
假设20140205101309是:2014,februari,5 10:13:09
如果您对时间不感兴趣,请执行以下操作:
select *
from operation.reject_detail a
where to_date(substr(a.call_date,1,8), 'YYYYMMDD') between
to_date('28-12-2013','DD-MM-YYYY') and
to_date('02-02-2014','DD-MM-YYYY');
答案 1 :(得分:1)
将日期存储为字符串是不好的做法,但由于这是你所拥有的并且它是一种相对合理的格式,你可以将它作为一个字符串进行比较:
select * from my.DETAIL a
where A.DATE between '20131228120000' and '20140202000000'
或者忽略表格上的时间部分并包括完整的第二个日期:
select * from my.DETAIL a
where A.DATE between '20131228000000' and '20140202235959'
将所有内容转换为DATE
类型似乎没什么意义,特别是如果您的列已编入索引。如果它没有索引,那么你只需查看日期部分:
where substr(A.DATE, 1, 8) between '20131228' and '20140202'