반응형
db에 시간에 대해 저장할 때 datetime과 unixtime 두 가지 방식 중 하나를 이용하여 저장한다.
다음과 같은 query가 datetime 컬럼에 대해 실행되면 어떻게 될까?
위의 경우 datetime 형식 컬럼에는 '1900-01-01 00:00:00.000'이 저장된다.
만약 int값을 0이 아닌 값으로 실행하면 어떻게 될까?
위의 경우 datatime 형식 컬럼에는 '1900-01-02 00:00:00.000'이 저장된다.
즉 숫자형의 값을 datetime 컬럼에 입력하면 '1900-01-01 00:00:00.000'을 기준으로 day가 증가 또는 감소한 값이 저장된다.
unixtime은 '1970-01-01 00:00:00'으로 부터 초/분단위로 데이터를 저장하는 형식이지만 특정한 데이터 타입으로 존재하는 것은 아니다.
따라서 초단위 이하까지의 디테일한 데이터가 필요하지 않을 경우 위의 특성을 이용하여 분단위 저장을 하는 것도 나쁘지 않다.
unixtime으로 초/단위 저장을 할 경우 아래와 같이 저장을 한다.
이러한 unixtime으로 저장을 하게 되면 4byte의 값으로 8byte의 datetime의 값을 저장할 수 있다는 장점이 있다.
1970-01-01 00;00:00.000분으로 부터 지난 초/분을 구하려면 datediff 함수를 사용하면 된다.
이렇게 unixtime으로 변경된 시간을 다시 datetime 형식으로 구하려면 dateadd 함수를 사용하여 기준이 되는 날짜로 부터 더해진 초/분을 계산하면 된다.
다음과 같은 query가 datetime 컬럼에 대해 실행되면 어떻게 될까?
INSERT 테이블 (날짜컬럼) values(0)
위의 경우 datetime 형식 컬럼에는 '1900-01-01 00:00:00.000'이 저장된다.
만약 int값을 0이 아닌 값으로 실행하면 어떻게 될까?
INSERT 테이블 (날짜컬럼) values(1)
위의 경우 datatime 형식 컬럼에는 '1900-01-02 00:00:00.000'이 저장된다.
즉 숫자형의 값을 datetime 컬럼에 입력하면 '1900-01-01 00:00:00.000'을 기준으로 day가 증가 또는 감소한 값이 저장된다.
unixtime은 '1970-01-01 00:00:00'으로 부터 초/분단위로 데이터를 저장하는 형식이지만 특정한 데이터 타입으로 존재하는 것은 아니다.
따라서 초단위 이하까지의 디테일한 데이터가 필요하지 않을 경우 위의 특성을 이용하여 분단위 저장을 하는 것도 나쁘지 않다.
unixtime으로 초/단위 저장을 할 경우 아래와 같이 저장을 한다.
INSERT 테이블 VALUES ('[1970-01-01 00:00:00.000 으로 부터 지난 초/분 숫자])
이러한 unixtime으로 저장을 하게 되면 4byte의 값으로 8byte의 datetime의 값을 저장할 수 있다는 장점이 있다.
1970-01-01 00;00:00.000분으로 부터 지난 초/분을 구하려면 datediff 함수를 사용하면 된다.
select datediff(second, '1970-01-01 00:00:00.000', [구하려는날짜])
select datediff(minute, '1970-01-01 00:00:00.000', [구하려는날짜])
이렇게 unixtime으로 변경된 시간을 다시 datetime 형식으로 구하려면 dateadd 함수를 사용하여 기준이 되는 날짜로 부터 더해진 초/분을 계산하면 된다.
select dateadd(second, [unixtime 값], '1970-01-01 00:00:00.000')
select dateadd(minute, [unixtime 값], '1970-01-01 00:00:00.000')
반응형
'Study > MSSQL' 카테고리의 다른 글
[MSSQL][tip] 암호화 (0) | 2010.03.21 |
---|---|
[MSSQL][advanced] 데이터의 물리적 구조 (0) | 2009.07.16 |
[MSSQL][basic] Primary Key, Unique Key, Clustered Index, NonClustered Index의 차이 (0) | 2009.07.13 |
[MSSQL][advanced] index 통계보기 및 업데이트 하기 (0) | 2009.05.25 |
[MSSQL][advanced] index 단편화 현상 (0) | 2009.05.19 |
[MSSQL][tip] varchar 타입 컬럼 검색 SP 작성 시 주의사항 (0) | 2009.05.08 |
[MSSQL][advanced] 성능 향상을 위한 query 작성과 tuning (0) | 2009.04.07 |
[MSSQL][tip] identity 증가값 설정 (0) | 2009.04.04 |