2013-07-25 2 views
0

SQL에 저장할 고유 키를 생성해야합니다. 오늘 날짜가 "2013/07/25"인 것으로 가정합니다 매일 4 자리 숫자로 된 고유 한 키를 생성 할 수있는 방법은 무엇입니까?은 날짜를 기준으로 4 자리 고유 ID 키를 생성합니다.

+0

약 4 년 키를 사용하여 약 27 년 범위 기간의 매일을 나타낼 수 있습니다. 이 기간만으로도 충분합니까? – Steve

+0

괜찮아요 steve –

답변

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에 데이터를 저장하고 저장하기 시작하면 기본 값을 변경하는 것이 쉽지 않습니다. 이 패턴을 피하고 고유 한 키를 테이블에 저장하는 더 유연한 방법을 선택하는 것이 좋지만, 물론 필자는 요구 사항을 알지 못합니다.

+0

매일 매일 두 개 이상의 레코드가 있다면 어떨까요? –

+0

그런데 프로 그레시브 카운트 나 분 카운터와 같은 다른 필드를 가져 오지 않고 고유 한 키를 가질 수는 없습니다. 하지만, 날짜로 저장 한 간단한 날짜는 문제가되지 않습니다. – Steve

+0

내가 무슨 뜻인지 모르겠어? –

1

'2010-01-01'과 같이 일부 날짜 이후부터 며칠이 걸릴 것입니다. 이렇게하면 최대 10,000 일을 드릴 수 있습니다. 이는 30 년 미만입니다.

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