본문 바로가기
SQL SERVER 도서 완독 후 내용 정리/SQL Server 디비로 누리는 특별한 세상 나의 첫 번째 데이터베이스

SQL Server 2016 다양한 날짜와 시간 데이터 형식

by 예비건물주 2023. 6. 8.

※ 이 글은 'SQL Server 디비로 누리는 특별한 세상 나의 첫 번째 데이터베이스 개발하기 (개발편)' 책을 1회 완독 후 다시 훑어 보면서 몰랐었던 부분, 계속 잊혀지는 부분(또 잊혀질테니 다시보기 위해), 알고 있었지만 정리하면 좋을거 같은 내용 등 을 정리한 글 입니다.
제가 향후에 다시보기 위해 정리한 내용이라서 설명이 부족할 수 있으니 자세한 내용은 해당 도서를 참고 부탁드리겠습니다.
또, 제가 이해를 잘못해서 정리를 잘못한 부분이 있다면 말씀부탁드립니다. (확인 후 수정하겠습니다)

 

P96-98

 

SQL Server 2005까지 날짜와 시간 데이터 형식은 datetime, smalldatetime 뿐이였다. 하지만 SQL Server 2008부터 date, time, datetime2, datetimeoffset까지 추가되어 다양한 형태의 날짜와 시간 데이터 형식을 제공한다.

 

아래는 다양한 날짜와 시간 데이터 형식 쿼리 (SYSDATETIME 함수와 SYSDATETMEOFFSET 함수는 2008부터 제공하는 날짜, 시간 관련 함수. GETDATE 함수보다 더 정교한 시간을 반환해준다.)

-- 변수 선언
DECLARE @dt01 datetime
DECLARE @dt02 smalldatetime
DECLARE @dt03 date
DECLARE @dt04 time
DECLARE @dt05 datetime2
DECLARE @dt06 datetimeoffset

-- 변수에 날짜와 시간 관련 함수 값 대입
SET @dt01 = GETDATE()
SET @dt02 = GETDATE()
SET @dt03 = SYSDATETIME()
SET @dt04 = SYSDATETIME()
SET @dt05 = SYSDATETIME()
SET @dt06 = SYSDATETIMEOFFSET()

-- 변수의 값 표시
SELECT @dt01 AS [datetime] 
SELECT @dt02 AS [smalldatetime]
SELECT @dt03 AS [date] 
SELECT @dt04 AS [time] 
SELECT @dt05 AS [datetime2]
SELECT @dt06 AS [datetimeoffset]
GO

결과

 

정교한 시간을 저장할 수 있는 time, datetime2, datetimeoffset 형에는 자릿수를 지정할 수 있다. 기본 자릿수는 7이므로 가장 정교한 시간을 저장할 수 있다. 만일 자리수에 0을 설정하면 초까지만 저장딘다. 지정할 수 있는 자릿수는 0부터 7까지다.

-- 자릿수 지정하여 변수 선언
DECLARE @dt01 time(2)
DECLARE @dt02 datetime2(0)
DECLARE @dt03 datetime2(3)
DECLARE @dt04 datetimeoffset(4)

-- 변수에 날짜와 시간 관련 함수 값 대입
SET @dt01 = SYSDATETIME()
SET @dt02 = SYSDATETIME()
SET @dt03 = SYSDATETIME()
SET @dt04 = SYSDATETIMEOFFSET()

-- 변수의 값 표시
SELECT @dt01 AS [time] 
SELECT @dt02 AS [datetime2_0] 
SELECT @dt03 AS [datetime2_3] 
SELECT @dt04 AS [datetimeoffset]
GO

결과