[英]convert varchar field data in date format in oracle
我有表测试列具有cretaed_dt和id。两者都是varchar 2类型。
描述测试
ID Varchar2(30)
Created_Dt varchar2(30)
从测试中选择*
ID created_dt
1 2014-07-22-12.23.49.832868
2 2014-08-04-19.40.11.787317
3 2014-06-15-19.40.11.787317
我需要选择2014年7月21日至8月5日之间的数据。理想情况下,需要选择ID 1和2。
我无法执行此操作,因为创建的日期列位于varchar2中。
请协助。
尽管您的数据存储为varchar2()
,您仍然可以使用它。 幸运的是,字符串采用正确的格式进行比较操作。 所以:
where created_dte >= '2014-07-21' and created_dte < '2014-08-05'
您可以使用to_date()
将varchar2()
转换为日期。 但是,仅按原样使用字符串将使Oracle可以利用列上的索引。
尽管您可以执行所需的操作,但是应该以本机日期格式将日期/时间存储在数据库中。 Oracle具有大量与日期相关的功能,然后可以访问这些功能。
用这个:
with t as (
select '1' id, '2014-07-22-12.23.49.832868' created_dt from dual union all
select '2' id, '2014-08-04-19.40.11.787317' created_dt from dual union all
select '3' id, '2014-06-15-19.40.11.787317' created_dt from dual
)
select *
from t
where to_timestamp(created_dt, 'yyyy-MM-dd-HH24.MI.SS.FF') between to_date('21 jul 2014', 'DD mon YYYY') and to_date('5 aug 2014', 'DD mon YYYY')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.