如题  小弟遇到一难题  就是想在数据库中查询出当前的日期(格式:2012-04) 及前12个月的日期  并在一列中输出  例如格式
日期
2012-04
2012-03
2012-02
2012-01
2011-12
2011-11
2011-10
2011-09
2011-08
2011-07
2011-06
2011-05

解决方案 »

  1.   

    to_char(sysdate,'yyyy-mm') 这个可以取到当前日期
      

  2.   

    如果要一次输出,那么需要用procedure。
    或者还有个办法,我们有一个时间表,里面存了20年的时间信息。
    就可以用select to_char(column, 'yyyy-mm') from xx where 日期范围(但前日期前12月)
      

  3.   


    SELECT   TO_CHAR(SYSDATE,'YYYY-MM') YM, 
    TO_CHAR(ADD_MONTHS(SYSDATE,-1),'YYYY-MM') YM1,
    TO_CHAR(ADD_MONTHS(SYSDATE,-2),'YYYY-MM') YM2,
    TO_CHAR(ADD_MONTHS(SYSDATE,-3),'YYYY-MM') YM3,
    TO_CHAR(ADD_MONTHS(SYSDATE,-4),'YYYY-MM') YM4,
    TO_CHAR(ADD_MONTHS(SYSDATE,-5),'YYYY-MM') YM5,
    TO_CHAR(ADD_MONTHS(SYSDATE,-6),'YYYY-MM') YM6,
    TO_CHAR(ADD_MONTHS(SYSDATE,-7),'YYYY-MM') YM7,
    TO_CHAR(ADD_MONTHS(SYSDATE,-8),'YYYY-MM') YM8,
    TO_CHAR(ADD_MONTHS(SYSDATE,-9),'YYYY-MM') YM9,
    TO_CHAR(ADD_MONTHS(SYSDATE,-10),'YYYY-MM') YM10,
    TO_CHAR(ADD_MONTHS(SYSDATE,-11),'YYYY-MM') YM11
    FROM   DUAL;
      

  4.   

    你写个procedure。 
    看你是想怎么用这一列数据啊。
      

  5.   

    那还不简单,用union all不就行了。
    SELECT TO_CHAR(SYSDATE,'YYYY-MM') YM FROM DUAL
    UNION ALL
    SELECT TO_CHAR(ADD_MONTHS(SYSDATE,-1),'YYYY-MM') YM1 FROM DUAL
      

  6.   

    4楼 flagiris 方法能查出一行   7楼的flagiris 方法能将一行变成一列  小弟问题搞定  感谢大家 尤其是上边两位  还有yuppy 提出其他可行方法  谢谢你们 给分结贴咯