看到 CSDN 中有网友提出这个需求,肯定有大虾实现了,只是没有搜索到,自己就实现了一个

SQL 中按年份生成8位自增编码/标识我想在数据库中的某列依次存储20070001,20070002等,而到了2008年,又变成了2008001,2008002,这可以在数据库中设置成默认值吗?如果可以怎么设?

http://community.csdn.net/Expert/TopicView3.asp?id=5696192



SQL 中按年份生成8位自增编码/标识-- 测试
SQL 中按年份生成8位自增编码/标识--
 自定义年份内自增
SQL 中按年份生成8位自增编码/标识
INSERT INTO CustomIDTest([ID][Code])
SQL 中按年份生成8位自增编码/标识
SELECT dbo.GenCustomID(DatePart(YY, DATEADD(YY, -1GetDate()))), dbo.GenCustomCode(DatePart(YY, DATEADD(YY, -1GetDate())))
SQL 中按年份生成8位自增编码/标识
UNION
SQL 中按年份生成8位自增编码/标识
SELECT dbo.GenCustomID(DatePart(YY, GetDate())), dbo.GenCustomCode(DatePart(YY, GetDate()))
SQL 中按年份生成8位自增编码/标识
UNION
SQL 中按年份生成8位自增编码/标识
SELECT dbo.GenCustomID(DatePart(YY, DATEADD(YY, 1GetDate()))), dbo.GenCustomCode(DatePart(YY, DATEADD(YY, 1GetDate())))
SQL 中按年份生成8位自增编码/标识
SQL 中按年份生成8位自增编码/标识
SELECT * FROM CustomIDTest

结果
SQL 中按年份生成8位自增编码/标识ID          Code     
SQL 中按年份生成8位自增编码/标识----------- -------- 
SQL 中按年份生成8位自增编码/标识
20060001    20060001
SQL 中按年份生成8位自增编码/标识
20060002    20060002
SQL 中按年份生成8位自增编码/标识
20060003    20060003
SQL 中按年份生成8位自增编码/标识
20060004    20060004
SQL 中按年份生成8位自增编码/标识
20070001    20070001
SQL 中按年份生成8位自增编码/标识
20070002    20070002
SQL 中按年份生成8位自增编码/标识
20070003    20070003
SQL 中按年份生成8位自增编码/标识
20070004    20070004
SQL 中按年份生成8位自增编码/标识
20080001    20080001
SQL 中按年份生成8位自增编码/标识
20080002    20080002
SQL 中按年份生成8位自增编码/标识
20080003    20080003
SQL 中按年份生成8位自增编码/标识
20080004    20080004

说明:
1、对于此示例,一年内最大增量只有,9999,需要考虑溢出如何处理,此版本未处理
2、因此,根据实际需求,我们可以选择以“天”为编码前缀,并且扩大自增部分长度,避免溢出,
3、当然此时得考虑,使用 INT 型长度是否足够
4、此版本自定义函数,使用传入年份参数
5、若欲始终使用当前系统日期,而不显示指定年份,则需要建立一视图来获取当前日期(因SQLServer中标量函数,不能使用 GetDate() 这样的非标量函数)

相关文章:

  • 2022-03-05
  • 2022-12-23
  • 2021-05-16
  • 2022-12-23
  • 2022-12-23
  • 2021-10-03
  • 2021-06-09
  • 2021-11-19
猜你喜欢
  • 2021-12-13
  • 2022-02-25
  • 2022-02-20
  • 2022-12-23
  • 2022-12-23
  • 2021-08-17
相关资源
相似解决方案