Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 설계프로세스
- Xcode
- ClickOnce
- Flume
- MindMap
- ERWIN
- garbage collection
- SQL
- Windows 7
- WinForm
- bitnami
- 지리산둘레길
- BCP
- MindManager
- union
- redmine
- .net
- Gundam
- 일상
- 프라모델
- hive
- 산출물
- AD
- hadoop
- T-SQL
- C#
- 글모음
- 프로젝트관리
- 소프트웨어공학
- diskpart
Archives
- Today
- Total
Blue sky, wind, cloud and knulf
T-SQL에서 여러개로 선택한 날짜 혹은 시간을 하나의 필드에 저장 본문
날짜나 시간을 다중으로 여러개 선택할 경우 이를 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