如何捕捉这个20140205101309日期格式?

时间:2014-02-06 07:17:19

标签: oracle

我想在我的桌子上找到这样写的日期“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');

提前谢谢

2 个答案:

答案 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'