一般我们用select sysdate from dual可以获得系统时间。这里是个date型的数据,但是格式不能指定。
    用select to_char(sysdate,'YYYY-MM-DD') from dual可以获得指定格式,但是是varchar型的数据。
    用select to_date(to_char(sysdate,'YYYY-MM-DD'),'YYYY-MM-DD') from dual既可以指定格式,也是date型的数据。但是我觉得这个SQL很麻烦。请问有没有简单一点的方法?

解决方案 »

  1.   

    session开始,首先执行:
    alter session set nls_date_format='yyyy-mm-dd';
    或者在数据库级,执行:
    alter system set nls_date_format='yyyy-mm-dd';   --对当前数据库所有session均有效。
      

  2.   

    SQL> select sysdate from dual;SYSDATE
    --------------
    18-3月 -10SQL> alter session set nls_date_format='yyyy-mm-dd';会话已更改。SQL> select sysdate from dual;SYSDATE
    ----------
    2010-03-18SQL> select sysdate+1 from dual;SYSDATE+1
    ----------
    2010-03-19SQL>
      

  3.   


    UP,建议使用alter system...alter session...每一次登陆数据库都必须重新执行一次才有效
      

  4.   

    如果楼主仅仅是想获得YYYY-MM-DD格式的日前的话,可以用trunc(sysdate)
      

  5.   

    除了SESSION和数据库级的,有没有基于用户级的?
    因为这个数据库,我的用户只有查询权限。