在oracle中获取系统时间时用
SELECT sysdate FROM dual;
得到的是:2012-3-29 18:50:13但是我想让所有的月份和日期都是两位,
例如:2012-3-3
我想让它成为 2012-03-03 的形式,有什么办法吗?PS:1、不能用TO_CHAR。TO_CHAR虽然可以但要存储的类型是DATE型;
2、先转换成TO_CHAR,再转换成date型也不可以,因为它又变回原来的格式了

解决方案 »

  1.   

    为什么不能用TO_CHAR
    数据库怎么存不关你的事
    格式只是显示的问题
    select to_char(sysdate,'yyyy-mm-dd') from dual;或者,修改会话选项
    alter session set NLS_DATE_FORMAT='YYYY-MM-DD';
      

  2.   

    楼主,这句话很有意思啊,在oracle中获取系统时间,又不是只能得到一位月,日的日期格式,
    你想要什么样的格式,是根据自己设定得到的!
    你也可以直接就取得两位月和日期的啊!
      

  3.   


    那日期的格式怎么设定,是不是TO_DATE(sysdate, 'YYYY-month-DD HH24:MI:SS');
    但这样取到的结果还是2012-3-30的格式。不知道你有没有什么办法
      

  4.   


    Microsoft Windows XP [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.C:\Documents and Settings\zhongxianlin>sqlplus admin/adminSQL*Plus: Release 10.2.0.1.0 - Production on 星期五 3月 30 09:31:14 2012Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    连接到:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining optionsSQL> select to_char(sysdate,'yyyy-mm-dd') from dual;TO_CHAR(SY
    ----------
    2012-03-30SQL>
      

  5.   


    看清楚啊,,,,我知道用to_char 可以,但现在我要的是date型,不用字符串
      

  6.   

    不必关心在数据库中是如何存储的。
    如果要想获得指定格式的日期,可以用to_char,如果要想得到date类型,可以to_char再to_date
      

  7.   

    你取出来的时候用to_char(日期,'yyyy-mm-dd')就行拉!