将date字段类型分成两个字段,一个表示日期,另一个表示确切时间
我试试了下,结果不对,请教下该怎么改?
create table t(v_day date, v_time date);
insert into t values(to_date('02/19/2008',' mm/dd/yyyy'),to_date('02:04:18', 'hh24:mi:ss'));
select * from t;
结果是:19-2月 -08     01-8月 -09,第二个本来应该是具体时间的,现在变成了日期,这是怎么回事?

解决方案 »

  1.   

    select to_char(sysdate,'hh24:mi:ss') from dual;
    select to_char(sysdate,'yyyy-mm-dd') from dual
      

  2.   

    我需要的是两个字段,而你的sysdate只是一个字段
      

  3.   

    所谓的date就是包括了时分秒的时间在内了,只是你怎么展现出来罢了,这个展现就是通过你定义的如'yyyy-mm-dd'之类的形式去展示出来。举例子来说,你保存的date to_date('02/19/2008',' mm/dd/yyyy'),在你没有输入时分秒的情况下,系统默认时分秒都为0,也就是你保存了2008年2月19日0时0分0秒这个时间
      

  4.   

    date类型包括了年月日时分秒
    你第二个时间没有日期,则自动补充当月第一天当日期
    用select to_char(v_time,'HH24:MI:SS')即可显示你想要的
      

  5.   

    select v_day,to_char(v_time,'HH24:MI:SS')v_time from t;
      

  6.   


    如果是这样的话,就不是日期字段了,用字符就可以了,如果要显示日期和时间分开的话,存一个字段就可以了,select的时候用to_char转一下就可以了如下select to_char(v_day, 'yyyy-mm-dd') "date", to_char(v_day, 'hh24:mi:ss') "time" from t
      

  7.   

    有没有什么办法,直接select语句结果就是后面的时间,而不要自动补上默认的日期?
    比如selelct v_time from t;结果直接是:02:04:18
      

  8.   

    这个恐怕没办法,可以通过更改nls_date_format来改变显示格式
    但是你前面的v_day就不能正常显示了
      

  9.   


    selec to_char(v_time,'hh24:mi:ss') from t就可以直接显示时间!