假如有个表名称为 table_name,其中有个字段为 date_field 为 date 型数据。
我 insert 了两条记录(第一条记录不包含“时分秒”):
insert into table_name(date_field) 
  values( to_date('2005-12-20'), 'yyyy-mm-dd');
insert into table_name(date_field)
  values( to_date('2005-12-20 12:48:50'), 'yyyy-mm-dd hh24:mi:ss');然后在 PL/SQL Developer 中查询,select * from table_name
结果 PL/SQL Developer 会自动把第一条记录显示成 不包含“时分秒”的时间,而第二条记录则显示成包含“时分秒”的时间。请问 PL/SQL Developer 是怎么做到的?
在 Windows 的 ADO 组件中,我们应该怎么判断,一个日期型的数据,是否包含时分秒?

解决方案 »

  1.   

    DATE型是以天为单位的浮点数存在数据库中的.
    后面的时分秒都是小数点后面的值.
      

  2.   

    SQL> SELECT ID,TT FROM A WHERE ROWNUM<=1;ID    TT
    ----- -----------------
    123   20051212 00:00:00SQL> SELECT ID,DECODE(TT,TRUNC(TT),TO_CHAR(TT,'YYYYMMDD'),TT) AS TT FROM A WHERE ROWNUM<=1;ID    TT
    ----- -----------------
    123   20051212
      

  3.   

    也就是说在输出之前,判断一下如果日期型的时分秒都是0的话,就仅输出日期部分PL/SQL Developer 具体怎么做的我就不清楚了,但我的思路的确可以做到试试看
      

  4.   

    如果 date_field = TRUNC(date_field) 就说明时分秒为0(也就是不包含),否则就包含时分秒
      

  5.   

    这个只是显示出来的问题,其实字段本身还是包含时分秒的。alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';修改当前会话。