[DB] Datetime, Smalldatetime and DateTime2

2013. 2. 22. 10:08Database

Datetime, Smalldatetime and Datetime2

MS SQL Server에서는 날짜를 표현하기 위한 타입을 다음과 같이 지원하고 있습니다.

비고 datetime smalldatetime datetime2
표현범위 1753.1.1~9999.12.31 1900.1.1~2079.6.6 0001.1.1~9999.12.31
정확도 1/1000초 (0.003, 0.007. 0.000 단위로 반올림) 분단위 (30초 기준 반올림) 1/10000000 (천만분의 1초)
저장공간 8Byte 4Byte 6-8Byte
비고 정확도 문제로 23시 59분 59.998~9초를 저장하면 자동으로 다음 날로 반올림됩니다. 정확도 문제로 23시 59분 30초를 저장하면 자동으로 다음 날로 반올림됩니다. MS SQL Server 2008부터 T-SQL에서 사용가능

선택기준

날짜를 표현하는 방법은 다양하고 장단점이 존재합니다. Datetime, SmallDatetime, Datetime2는 날짜와 시간을 무결성에 어긋나지 않게 관리해주고 사용할 수 있게 해줍니다. 하지만 정확도가 높아질 수록 성능이 비교적 떨어지고 차지하는 데이터크기도 커지게 됩니다. 단지 날짜를 출력만 하는 목적이거나, 좀더 고성능을 지향한다면 char를 쓰는 것도 하나의 좋은 대안이 될 수 있습니다.

한가지 분명한 것은 DB를 설계할 때 최선은 있지만, 정답은 없다는 자세를 가지는 가지는 것이 아닐까요?

참고자료