发现插入DB后的日期类型数据都是YYYY/MM/DD的
现在我把这数据查出来,不作任何转换的话,数据格式也是
YYYY/MM/DD吗?
PS:我插入的时候有可能是“YYYYMMDD”或“YYYY-MM-DD”呀“YY—M—D”等等等等的形工插入!第二个问题
同样是2010/06/23
(A)一个格式是YYYY/MM/DD,(B)一个是YYYY-MM-DD
现在我直接A=B这个判断能成立吗?

解决方案 »

  1.   

    -- 是字符串的吗?replace(a,'/','-')=b
      

  2.   

    你的DB中存日期的字段是Varchar2类型还是Date类型。
    如果Varchar2类型,那么只能插入字符串,而且下次取的时候还是原来字符串。不会变化
    如果是Date类型,那么只能插入浮点数,而且因设置不同,查询时显示的内容也不同。但其日期值不变。
    应该补一补课。
      

  3.   

    回复三楼是Date类型的。就是说不管他显示什么样的格式都好,两个日期值相等的日期类型字段直接用“=”号比较都能是TRUE是吧
      

  4.   


    -- 所以日期字段 相比较,要不用 trunc(a.date_column)=trunc(b.date_column)
    -- trunc 的意思是把日期字段截断到当日的起始时间 :如: '2010-06-23 00:00:00 0000'
      

  5.   


    -- 或者用 to_char() 函数,将其转换成字符型来进行比较!-- 但是你若是要查日期区间的话,一般不需要用函数,如:
    -- 查询某个字段(日期) 在 2005-06-01 到 2005-06-11 (包括这两天),可用如下语句:
    where date_column >= to_date('2005-06-01','YYYY-MM-DD')
      and date_column < to_date('2005-06-12','YYYY-MM-DD');-- 为了提高查询语句的效率,函数尽量用到 条件不等式 的 右边!-- 这样:若此字段有索引的话,将可能会用到此索引!,但是如果你左边有函数,此索引可能无法用上!
      

  6.   

    不知道了,我一般在日期比较前都用trunc的
      

  7.   


    2题答案:是相等的,下面是例子。
    SQL> declare
      2  a date;
      3  b date;
      4  begin
      5  a:=to_date('2010/06/23
      6  ','yyyy/mm/dd');
      7  b:=to_date('2010-06-23','yyyy-mm-dd');
      8  if a=b then
      9  dbms_output.put_line(1);
     10  else
     11   dbms_output.put_line(0);
     12  end if;
     13  end;
     14  /PL/SQL 过程已成功完成。SQL> set serveroutput on
    SQL> /
    1PL/SQL 过程已成功完成。1题答案:
    SQL> alter session set nls_date_format='yyyy/mm/dd';会话已更改。SQL> select sysdate from dual;SYSDATE
    ----------
    2010/06/26
      

  8.   

    yyyy/mm/dd
    我也遇到过这样的问题,XP下装10g的库格式是yyyy-mm-dd,到WIN7下就是yyyy/mm/dd.不知道是不是跟系统有点关系.