大虾们 小弟求助
我现在有个表test 其中的一个字段为a 数据是2007-10-11
不利用代码写, 只用sql查询,只查询出这个字段的结果10(就是当我查询a的时候,我只让他的结果出来10就可以,不用全查出来2007-10-11)

解决方案 »

  1.   

    select 10 as a from dual
      

  2.   

    我可能没说明白 大虾们在看下是这样的,test表只有一个字段a,其中a的数据为2007-10-11,我可以利用sql查询出a的数据(select a from test 这样我能查询出a的数据为:2007-10-11),我现在只想要在查询结果中查询出10就可以,其余的不要
      

  3.   

    是不是想查出月份啊,如果是,这样的select month(a) from test 
      

  4.   


    Select to_char(Sysdate,'MM') From dual
      

  5.   

    小弟这么写的 实现出来了 select substr(a,6,2) from test 结果是10(从第六位开始截取,截取2位)
      

  6.   

    select decode(a,'2007-10-11','10') from test 
      

  7.   

    select decode(a,'2007-10-11','10',a) from test 
    应该这样
      

  8.   

    如果a字段是varchar型的:
    select substr(a,6,2) from test
    如果a字段是date型的:
    select to_char(a,'mm') from test
      

  9.   

    select substr(a,6,2) from test 
    这样,应该是!
      

  10.   

    顶一下
      oracle QQ群:54775466
            欢迎您的到来 
                   大家一起探讨。
      

  11.   

    select to_char(to_date(a, 'yyyy-mm-dd'), 'mm') from test;
      

  12.   

    select to_char(to_date(a,'yyyymmdd'),'mm') from test;
      

  13.   


    select to_char(a,'DD') from test
    where to_char(a,'YYYY-MM-DD HH24:MI:SS')='2007-10-11'
      

  14.   

    select to_char(to_date('2007-10-11','yyyy-mm-dd'),'mm') from dual
      

  15.   

    select to_char(to_date(a,'yyyymmdd'),'mm') from test;
      

  16.   

    楼主貌似不是那个意思,哈哈,楼主如果说需要查询出月份的话,可以使用上面N多版本的答案,如:
    SELECT TO_CHAR(a,'MM') FROM test;楼主是不是像直接通过select a FROM test得到月份的返回值呀,呵呵,看样子有点像哈,要这样的话,只能在一个会话下实现,除非手动去修改初始化参数信息中的:nls_date_format值信息,不过当前会话你可以用:alter session set nls_date_format='MM';来完成修改。模拟获取当前系统时间:
    SQL> connect / as sysdba;
    已连接。
    SQL> alter session set nls_date_format='MM';会话已更改。SQL> SELECT sysdate FROM dual;SY
    --
    04SQL> SELECT sysdate+6*31 FROM dual;SY
    --
    10不过这部分你不要在PL/SQL相关第三方工具内部去尝试,如PL/SQL它返回日期格式有自己的一套,它是一个终端可以自己对ORACLE查询出来的时间进行相应的显示格式转换(仅仅为显示格式,日期的值是不会变的),就像你用JDBC一样,在PL/SQL中设置时间格式如下:不过个人建议还是在写SQL的时候去控制。