본문 바로가기

MS-SQL

MSSQL 서버의 디폴트 datetime 포맷 변경

웹 개발을 하면서 해외 프로젝트를 할 경우가 종종 있습니다. 우리나라는 기본적으로 yyyy-mm-dd 형식이니 해외 프로젝트도 동일하게 표시해 줘도 문제 없겠지 생각하지만, 예를 들어 러시아 프로젝트를 하다 보니 러시아인들은 dd-mm-yyyy를 날짜형식으로 사용하니 datetime 디폴트 포맷을 맞춰 달라고 합니다. 쉽게 얘기해서 GETDATE() 했을때 yyyy-mm-dd hh:mm:ss 를 dd-mm-yyyy hh:mm:ss 로 나오게 하고 싶은거죠. 그럼 개발자는 DB서버 또는 해당 DB의 디폴트 datetime 포맷을 바꾸려고 하게됩니다.


마이크로소프트 참고문서를 찾아보면 이렇습니다. 여기 내용을 보면 기본 날짜형식은 현재 언어 설정에 따라 결정되니까 SET LANGUAGE나 SET DATEFORMAT을 이용하라고 합니다. 새쿼리 창을 열고...

SELECT @@LANGUAGE
SET LANGUAGE Italian;
SELECT GETDATE()

SET LANGUAGE us_english;
SELECT GETDATE()
SELECT @@LANGUAGE


처음엔 한국어였습니다. Italian으로 언어를 바꾸고 us_english로 바꿔봐도 GETDATE()결과는 항상 yyyy-MM-dd 입니다. ㅠㅜ

StackOverflow에서 검색해 보니 ManagementStudio > Object Explorer > 서버오른마우스버튼 클릭 > 속성 > Advanced > Misc > Default Language 를 바꾸라 합니다. Russian으로 바꾸고 다시 접속해 보면?




똑같습니다. MSSQL서버의 디폴트 datetime 포맷은 항상 standard SQL/ISO date 포맷 즉, yyyy-mm-dd로 세팅된다는 거죠. 결론은 yyyy-mm-dd 포맷 이외의 datetime 형식을 사용하는 나라에서는 날짜를 표현할 때 항상 로컬형식으로 파싱해 주어야 한다는 겁니다. 결국은 뭘해도 MS-SQL서버의 디폴트 datetime 포맷은 변경이 안됩니다. 

혹시 방법을 알고 계신 분은 댓글 달아주세요. 정정하겠습니다. ^^


프로젝트의 성공을 기원합니다.