表中的日期字段(l_time)是varchar2类型的,存放的值类似于‘2010-04-22’.这个是历史问题。
现在的问题是在进行时间条件的搜索时,需要把这个字段转换成时间戳的格式。构造的SQL条件句类似于“select fileds from table where oracle_function(ls_time)>=时间戳”求助这个oracle_function,该用哪个,可以把varchar2类型的值转换成时间戳
没怎么接触过ORACLE,但是时间紧,求助!

解决方案 »

  1.   

    本帖最后由 inthirties 于 2011-04-22 16:44:08 编辑
      

  2.   

    如果表中没有数据的话:alter table 表名 modify (字段名 类型)
    如果有数据的话:修改原字段名:ALTER TABLE 表名 RENAME COLUMN 字段名 TO 字段名1;
    添加一个和原字段同名的字段:ALTER TABLE 表名 ADD 字段名 DATE;
    将原来的数据更新到新字段中,这是要注意,一定要显示进行数据类型转换:UPDATE 表名 SET 字段名 = CAST(字段名1 AS  DATE);
    删除原来的备份字段:ALTER TABLE 表名 DROP COLUMN 字段名1;
      

  3.   

    把时间戳转换为varchar2不就行咯你那样干效率低的
      

  4.   

     
    我不能修改数据库表结构的哈,其实就是想求一函数可以把vacrhar2类型的日期格式化的字符串转换成时间戳。
    就是将varchar2类型的'2010-04-22'这种字符串转换成时间戳
      

  5.   


    --用to_date(date,format)函数
    create table t(
           col_1 number(2),
           col_2 varchar2(20));
    --
    insert into t
    select 10,'2011-01-01' from dual union all
    select 11,'2011-02-02' from dual union all
    select 15,'2011-03-05' from dual union all
    select 20,'2011-04-21' from dual union all
    select 54,'2011-04-22' from dual;
    --
    SQL> select * from t
      2  where to_date(col_2,'yyyy-mm-dd')<=to_date('2011-03-05','yyyy-mm-dd');COL_1 COL_2
    ----- --------------------
       10 2011-01-01
       11 2011-02-02
       15 2011-03-05