编号一个12位数,前8位为默认日期,后四位由0001开始此编号每天都要重0001开始。
如:2010-12-30 编号是由 201012300001
    2011-12-31 编号是由 201012310001数据库用的是oracle,请教大家有什么好的方式来生成编号吗

解决方案 »

  1.   

    建个辅助表  比如只存id1 自增  id2 就是你要的编号
    id2 就是根据id1和日期组合的  存进表里。
    然后这就得到 你想要的编号了,在放的实际需要的表上
    spring 写个定时任务,每天0点 将辅助表清空
      

  2.   


    很感谢LZ,可是数据库是oralce,自增列需要用到sequence,就需要每天重置sequence为1;
    个人解决办法如下:
    1、创建sequence seq_tabl_id
    2、获取编号:日期+select seq_tabl_id.nextval  from dual;
    3、每天0点定时执行 
       String seq = select seq_tabl_id.nextval  from dual;
       alter sequence seq_tabl_idincrement by -(seq-1);
       select seq_tabl_id.nextval  from dual;
       alter sequence seq_tabl_idincrement by 1;
      

  3.   

    请教大家有什么好的方式来生成编号吗String.toString("%d%04d",201003,1);
      

  4.   

    一句sql就实现了
    SELECT NVL((select 字段名 + 1 FROM (select 字段名 FROM 表名 where SUBSTR(TO_CHAR(字段名),1,8) = TO_CHAR(SYSDATE, 'YYYYMMDD')  ORDER BY 字段名 DESC) WHERE ROWNUM = 1), TO_CHAR(SYSDATE, 'YYYYMMDD') || '0001') FROM DUAL;
      

  5.   

    前提是字段类型为NUMBER类型,楼主记得给分哦!!!