select to_char(sysdate, 'fmyyyy-mm-d Hh:mi:ss') as year from dual;
其中的模板d如果给一个表示的值和给两个dd有什么区别,数据似乎不一致select to_date('1989-02-19 22:20:14', 'yyyy-mm-dd HH24:mi:ss') from dual;
为什么给了时分秒,却只显示年月日select '1' + '1' from dual;
显示结果为2,为什么两个字符串还可以进行四则运算

解决方案 »

  1.   

    1、一个d如果是1--9号,那么就是1--9,两位数没什么区别
    比如格式:yyyy-mm-d: 2010-11-2;格式yyyy-mm-dd : 2010-11-022、不可能只显示年月日,可能是你在SQLPLUS中显示长度不够
    先执行 set linesize 1000,然后再select to_date('1989-02-19 22:20:14', 'yyyy-mm-dd HH24:mi:ss') from dual;3、数字型的字串再进行四则运算时候,隐士转换了
      

  2.   

    select to_char(sysdate, 'fmyyyy-mm-d Hh:mi:ss') as year from dual;
    其中的模板d如果给一个表示的值和给两个dd有什么区别,数据似乎不一致
    --个人觉得用d 是错误的 虽然有数据 但是肯定是错误的select to_date('1989-02-19 22:20:14', 'yyyy-mm-dd HH24:mi:ss') from dual;
    为什么给了时分秒,却只显示年月日
    --因为你的时间session是 yyyy-mm-dd的
    SQL> select to_date('1989-02-19 22:20:14', 'yyyy-mm-dd HH24:mi:ss') from dual;TO_DATE('198
    ------------
    19-FEB-89SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';Session altered.SQL> select to_date('1989-02-19 22:20:14','yyyy-mm-dd hh24:mi:ss') from dual;TO_DATE('1989-02-19
    -------------------
    1989-02-19 22:20:14select '1' + '1' from dual;
    显示结果为2,为什么两个字符串还可以进行四则运算
    --用四则运算 会自动调用to_number()
      

  3.   

    说错了第一个问题
    一个d是代表当周的第几天
    比如:今天是2010-11-02
    SELECT To_Char(SYSDATE,'yyyy-mm-d') FROM dual;
    结果是 2010-11-3d代表当周第几天,星期日是第一天
      

  4.   

    1. 比如 2010-11-9 则1个d显示 2010-11-9,2个d显示2010-11-09
    2.和数据库客户端日期显示格式设置有关系。
    alter   session   set   nls_date_format= 'YYYY-MM-DD HH24:MI:SS'
    3.因为oracle存在自动转换类型,自动将数学符号两边的字符串转换为数字了 
      

  5.   

    1.
    一个d是说这天是这星期的第几天 比如今天就是一星期的第四天 两个就是今天是这个月的多少号
    2.
    这跟你的默认日期显示格式有关  默认显示的格式是什么就是什么 你也可以在注册表加个值nls_date_format串  值为 yyyy-mm-dd HH24:mi:ss 重启下数据库 在执行语句就会显示到秒3
    自动转换成number类型的 所以相加