1) 데이터의 정확성
- 데이터를 일자만 저장할 것인가? 시분초밀리초까지 저장할 것인가?
2) 데이터의 범위
- 1900년 이전이나 2079년 이후의 데이터도 저장할 것인가?
Datetime 데이터형식과 Char(8) 형식>
1) Datetime 데이터형식의 장점
- 우선 Datetime 형식은 날짜시간을 저장하기 위해 특화된 데이터형식입니다.
- 잘못된 날짜형식(예를 들어, 20070840 과 같은 데이터)는 입력할 수 없도록 자동 체크해 줍니다.
- 또한, 다양한 날짜시간관련함수(dateadd, datediff, datepart, year, month, day 등)를 지원합니다.
- 그러므로, 날짜시간형 데이터에는 DateTime을 사용하시는 것이 바람직합니다.
2) Char(8) 데이터형식을 선호하는 이유
- datetime 형식은 정확하게 원하는 날짜를 선택하기 위해서는 정확한 데이터형식의 이해를 기반으로 쿼리를 작성해야 합니다. 예를 들어, 오늘날짜의 데이터를 조회하기 위해서는 where 날짜 between '2007-08-06 00:00:00.000' and '2007-08-06 23:59:59.997'로 명확하게 지정하거나, where 날짜 >= '2007-08-06' and 날짜 < '2007-08-07'로 지정해 주어야 합니다.
- 날짜의 오른쪽 한계값을 '2007-08-06 23:59:59.999'로 잘못 지정하는 경우, '2007-08-07 00:00:00.000'로 반올림되게 되어 잘못된 결과가 반환되는 원인이 될 수 있습니다.
- 그 외에도 데이터의 가공 등에 잘못된 오해로 인한 사용자 실수를 방지하기 위해 비교적 실수할 가능성이 적은 char(8) 형식을 선호하였습니다.
- 하지만, 분명히 datetime 데이터형식을 이해하고 사용한다면, 위의 datetime의 장점과 같이, 동일한 저장공간으로도 더 정확한 데이터를 관리할 수 있고, 잘못된 데이터입력에 대한 유효성검사도 내장하고 있기 때문에, datetime 데이터형식을 사용하는 것이 바람직하다고 할 수 있습니다.
==> 결국, 날짜시간 데이터에는 datetime 데이터형식을 사용하는 것이 바람직하나, 비즈니스 요구사항에 따라 또는 필요에 따라 char(8)로 대체하여 사용할 수도 있습니다.
Datetime 데이터형과 Smalldatetime 데이터형)
- Datetime은 8 바이트로 저장되고 smalldatetime은 4 바이트로 저장됩니다.
- datetime 형식은 1753년 1월 1일에서 9999년 12월 31일까지 1/300초(3.33밀리초 또는 0.00333 초)의 정확성을 가진 날짜 및 시간 데이터입니다.
- 1smalldatetime 형식은 900년 1월 1일에서 2079년 6월 6일까지 분 단위의 정확성을 가진 날짜 및 시간 데이터입니다. 29.998 초 이하의 근사치 분으로 버림되며 29.999 초 이상의 값은 근사치 분으로 반올림됩니다.
==> 그러므로 날짜의 데이터범위와 정확성을 근거로 datetime과 smalldatetime을 선택하시면 됩니다.
위의 내역에 관련해서는 우선 온라인 설명서의 각 데이터 형식의 설명 부분을 읽어보시면 도움이 되시리라 판단됩니다. 그외에도 inside SQL Server 2005 T-SQL Programming 1 장에 보면 참고하실만한 내용이 언급됩니다.
출처 : DBGuide
[출처] DateTime ? Char(8) or (10)|작성자 우리자나
'데이터베이스 > SQL Server' 카테고리의 다른 글
배열을 테이블(row)로 변환 where in에 사용하기 적합 (0) | 2008.04.29 |
---|---|
퀴즈 문제 (0) | 2008.04.29 |
세로 컬럼들을 가로 컬럼으로 모으기.... pivot 쿼리 (0) | 2008.04.29 |
컬럼명 변경하기 (0) | 2008.04.29 |
Table 변수 vs 임시 테이블 (Ver. 2000) (0) | 2008.04.29 |