java中自动生成有规律的编号

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:47:05
例如“2008050001,2008060002”前六位是系统时间+“0001”
但注意 我的要求是 当到了下个月份时,后4位是顺序下来的
比如 5月份最后一笔业务是“2008050012”那么6月份的第一
笔业务就是“2008060013”
谢谢帮忙!

public class Main {
private static long n = 1;
public static void main(String[] args) {
System.out.println(test(n));
System.out.println(test(n));
}

public static long test(long l) {
String str = new SimpleDateFormat("yyyyMM")
.format(new java.util.Date());
long m = Long.parseLong((str)) * 10000;
long ret = m + l;
n = l + 1;
return ret;
}
}

oracle 10g中:

SELECT (TO_CHAR(SYSDATE,'YYYYMM') || LPAD(NVL(MAX(SUBSTR(id, 7, 4)) + 1, 1), 4, '0')) AS newId

FROM test

test表中有个字符型的id字段。

把系统时间转换成数字然后*10000,再加上一次递增1的后四位数

将最后4位数存在一个表中。前面几位用当前时间。做个函数拼出来不就行了。
每生成一个号后再去表中修改那个4位数。

你可真会想
这样的编号既然你能想出来,为什么不自己有程序写出来