Blue sky, wind, cloud and knulf

T-SQL에서 여러개로 선택한 날짜 혹은 시간을 하나의 필드에 저장 본문

라이브러리/시스템

T-SQL에서 여러개로 선택한 날짜 혹은 시간을 하나의 필드에 저장

눌프 2011. 6. 3. 11:45
날짜나 시간을 다중으로 여러개 선택할 경우 이를 int형으로 하나의 필드에 저장할 수 있다. 각 값을 제곱으로 하여 더해주면 된다.
이걸 다시 풀때에는 역으로 추적해줘야 한다. 아래 보면 알겠지만 LOG10함수를 통해 제곱근을 구하게 된다.
MS-SQL내부의 스케줄 관련된 것들은 모두 이런 방법을 사용하는 것으로 생각된다.



 

DECLARE @PowSum        INT
DECLARE @Pow        INT
DECLARE @CalInterval   VARCHAR(128)
SET @CalInterval = ''
SET @PowSum = 15
WHILE (@PowSum > 0)
   BEGIN
      SET @Pow = CONVERT(INT, LOG10(@PowSum)/LOG10(2))
      SET @CalInterval = @CalInterval + ',' + LTRIM(STR(POWER(2, @Pow)))
      IF ( (@PowSum % POWER(2, @Pow)) = 0 )
         BREAK
      ELSE
         SET @PowSum = @PowSum % POWER(2, @Pow)
   END
SELECT SUBSTRING(@CalInterval, 2, LEN(@CalInterval)-1) 
Comments