我需要生成唯一的密钥以存储在sql中。 假设我们有今天的日期“2013/07/25” 如何根据日常日期生成独特的4位数字密钥?基于日期生成4位数字唯一标识密钥
回答
使用一个4位数字键,你可以从一个预定义的基地代表每天开始从该基地计数。
例如(使用1/1/2000作为基准):
DateTime dt = new DateTime(2000,1,1);
DateTime dtEnd = dt.AddDays(9999);
Console.WriteLine("Maximum date available:" + dtEnd.ToShortDateString());
dtEnd = new DateTime(2013,7,25);
TimeSpan ts = dtEnd - dt;
Console.WriteLine("Today Day number from base: " + ts.TotalDays);
当然,你可以很容易地微调范围变更基准日,并把它设置为不同的值。但是,一旦设置并开始在数据库中保存数据,将不容易更改基准值。我建议避免这种模式,并选择一种更灵活的方式将唯一键存储在表中,但当然,我不知道您的要求。
如果每天有超过1条记录会怎么样? –
没有办法,然后有一个独特的关键,没有引入一些其他领域,如渐进计数或分钟计数器。但是,我不得不问,保存为日期的简单日期是无可争议的? – Steve
我没有得到你的意思? –
我会采取自某日期以来的日子,如'2010-01-01'。这会给你多达10,000天,这是30年。
这里是这样做的方法:
select right('0000'+cast(datediff(day, '2010-01-01', @YOURDATE) as varchar(4)), 4)
- 1. 生成唯一密钥
- 2. 生成唯一的密钥
- 3. 唯一密钥生成
- 4. 仅基于密码生成AES密钥
- 5. 生成一个唯一的密钥来识别系统
- 6. 从联合身份标识生成唯一的数据存储区密钥
- 7. 生成唯一标识符作为基于集合的查询
- 8. 为std :: map生成唯一密钥
- 9. Android上的唯一密钥对生成
- 10. 生成字母数字标识(唯一字符串)
- 11. 从字母数字字符串生成唯一标识
- 12. Java中的串行密钥生成和验证(机器唯一标识符)
- 13. 生成用于标识记录的唯一随机字符串
- 14. 如何生成唯一的64位密钥
- 15. 自动生成的字母数字的唯一标识与C#
- 16. 生成基于数字的,没有重复中4个位数
- 17. 生成条件唯一标识符
- 18. Google Go不生成唯一标识符?
- 19. 即时生成唯一标识
- 20. iOS 6 GKChallenge生成唯一标识符?
- 21. 唯一号码标识符生成
- 22. 生成std :: string的唯一标识
- 23. 想要在java中生成15个字符的唯一密钥
- 24. 基于日期和限制标识值
- 25. 唯一数字标识
- 26. 生成基于一个日期的日期列表
- 27. 针对数据库条目的高效唯一密钥生成
- 28. GroupBy基于密钥字典
- 29. 如何实现自动生成的唯一标识包含日期时间
- 30. 基于密钥
一个四位数字的密钥可以用来表示在大约27年的范围内的每一天。这对你的日期范围足够了吗? – Steve
这很好史蒂夫 –