根据日期生成4位唯一身份密钥

时间:2013-07-25 10:21:52

标签: sql-server c#-4.0 numbers unique-key

我需要生成唯一的密钥来存储在sql中。 假设我们今天有日期“2013/07/25” 我们如何根据日常日期生成唯一的4位数密钥?

2 个答案:

答案 0 :(得分:1)

我会考虑某个日期以来的日子,例如'2010-01-01'。这将给你最多10,000天,这有点不到30年。

这是一种方法:

select right('0000'+cast(datediff(day, '2010-01-01', @YOURDATE) as varchar(4)), 4)

答案 1 :(得分:1)

使用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);

当然,您可以轻松微调您的范围,更改基准日期并将其设置为不同的值。但是,一旦设置并开始在db中保存数据,就不容易更改基值。我建议避免这种模式,并选择一种更灵活的方式在表中存储唯一键,但是,当然,我不知道你的要求。