MS-SQL 을 사용하다 보면 가끔 GMT 시간이 맞지 않을 경우가 있는데, SELECT Query를 수행할 때 시간 값을 적용해서 가져오는 방법이 있어 공유 하기로 한다.

CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, SEARCH_S_DATE), '+09:00'))

CONVERT, SWITCHOFFSET의 경우 MS-SQL에서 기본 제공되는 함수이고,

datetime, datetimeoffset의 경우 해당 함수에서 어떤 형식으로 변환 할 것인지 설정하는 매개변수 값이다.

 

자세히 살펴 보자면,

CONVERT(datetimeoffset, SEARCH_S_DATE)    // Date1

 

의 의미는 SEARCH_S_DATE라는 컬럼(이때 컬럼은 datetime이든 varchar이든 상관 없음)의 값을 datetimeoffset 형태로 변환한다는 뜻이고,

SWITCHOFFSET(..., '+09:00')    // Date2

 

는 시간 형태로 변환 된 값에 실제 원하는 값만큼 offset을 적용한다는 것이며(이때 도출되는 값의 형태는 맨 뒤에 +09:00가 항상 붙어 있음),

CONVERT(datetime, SWITCHOFFSET(...))    // Date3

 

의 뜻은 offset 적용 값을 지우고 일반적인 날짜 포맷으로 설정한다는 뜻이다.

최종적으로 실제 쿼리를 적용해 보면 다음과 같이 나옴을 알 수 있다.

 

 

 

+ Recent posts