0

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

4

2 回答 2

1

我会从某个日期开始计算,例如“2010-01-01”。这将为您提供最多 10,000 天的时间,即 30 年以下。

这是这样做的一种方法:

select right('0000'+cast(datediff(day, '2010-01-01', @YOURDATE) as varchar(4)), 4)
于 2013-07-25T10:30:23.540 回答
1

使用 4 位数字键,您可以从预定义的基数表示每一天,并从该基数开始计数。

例如(使用 2000 年 1 月 1 日作为基准):

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 中保存数据,就不容易更改基值。我建议避免这种模式并选择一种更灵活的方式在表中存储唯一键,但是,当然,我不知道您的要求。

于 2013-07-25T10:31:46.567 回答