Мне нужно создать уникальный ключ для хранения в 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);
Конечно, вы могли бы легко подстроить ваш диапазон изменения даты базового и установив его на другое значение. Однако, после установки и начала сохранения данных в db, изменить базовое значение будет непросто. Я бы рекомендовал избежать этого шаблона и выбрать более гибкий способ хранения уникальных ключей в таблице, но, конечно, я не знаю ваших требований.
Что делать, если есть более 1 записи за каждый день? –
Ни в коем случае не иметь уникальный ключ, не внося в некоторые другие поля, такие как прогрессивный счетчик или счетчик минут. Но, я должен спросить, простая дата сохранена, поскольку дата не может быть и речи? – Steve
Я не получил то, что имею в виду? –
Я бы взял дни с даты, например «2010-01-01». Это даст вам до 10 000 дней, что немного меньше 30 лет.
Вот способ сделать это:
select right('0000'+cast(datediff(day, '2010-01-01', @YOURDATE) as varchar(4)), 4)
Четырехзначный ключ может использоваться для индикации каждого дня в диапазоне около 27 лет. Достаточно ли этого для диапазонов дат? – Steve
это прекрасный steve –