IT/SQL

MSSQL Format 함수 사용법, 예제 및 yyyyMMdd 등 인수 설명

아이앤휘 2024. 4. 2. 16:20

MSSQL 에서 FORMAT 함수는 기존의 날짜포맷 변환 등에 사용되던 convert 보다 가독성이 좋아서 보통 권장하는 함수이다.

 

날짜 포맷 예제

	SELECT FORMAT(GETDATE(), 'yyyyMMddhhmmss')
	GO
	SELECT FORMAT('2024-01-03', 'yyyyMMdd hhmmss')
	GO
	SELECT FORMAT(CAST('2024-01-03' AS DATETIME), 'yyyyMMdd hhmmss')

 

 

 

날짜형식 FORMAT 함수 실행 결과

 

이렇게 나오는데, CONVERT(CHAR(8), GETDATE(), 112) 처럼 쿼리하는 것 보다는 결과값이 직관적으로 보이고, 형식을 바꾸기도 쉬워서 사용하기도 편함. 첫번째 인수는 VARCHAR 형식이라, 실제 날짜와 동일한 형식으로 구성되어있더라도, 그대로 넣으면 안되고 날짜형식으로 바꿔서 넣어야 한다.

 

날짜 형식 뿐만 아니라 숫자형식도 사용가능한데, 숫자형식은 반올림,소수자리수 등등을 감안하면 이거보단 그냥 원하는 포맷을 사용자정의 함수로 만들어서 사용하는 것이 편할 것 같음.

 

FORMAT 전화번호 예제

SELECT FORMAT(01012345678, '000-0000-0000')

 

결과

FORMAT 으로 전화번호 형식 처리

 

 

날짜 형식에 들어가는 yyyy 등 문자열은 아래와 같음. 대충 표 보면서 주로 사용하는 형식 쿼리 몇 번만 해보면 익숙해짐

형식 지정자 설명 예제
"d" 간단한 날짜 패턴입니다.

추가 정보:간단한 날짜("d") 서식 지정자.
2009-06-15T13:45:30 -> 2009년 6월 15일(en-US)

2009-06-15T13:45:30 -> 2009/15/06(fr-FR)

2009-06-15T13:45:30 -> 2009/06/15(ja-JP)
"D" 자세한 날짜 패턴입니다.

추가 정보:자세한 날짜("D") 서식 지정자.
2009-06-15T13:45:30 -> 2009년 6월 15일 월요일(en-US)

2009-06-15T13:45:30 -> понедельник, 15 июня 2009 . (ru-RU)

2009-06-15T13:45:30 -> Montag, 15. Juni 2009 (de-DE)
"f" 전체 날짜/시간 패턴(간단한 시간)입니다.

추가 정보: 전체 날짜 간단한 시간("f") 서식 지정자.
2009-06-15T13:45:30 -> 2009년 6월 15일 월요일 오후 1:45(en-US)

2009-06-15T13:45:30 -> den 15 juni 2009 13:45 (sv-SE)

2009-06-15T13:45:30 -> Σσσα, 15 σ 2009 1:45 μμ (el-GR)
"F" 전체 날짜/시간 패턴(자세한 시간)

추가 정보: 전체 날짜 자세한 시간("F") 서식 지정자.
2009-06-15T13:45:30 -> 2009년 6월 15일 월요일 오후 1:45:30(en-US)

2009-06-15T13:45:30 -> den 15 juni 2009 13:45:30 (sv-SE)

2009-06-15T13:45:30 -> Σσσα, 15 σ 2009 1:45:30 μμ (el-GR)
"g" 일반 날짜/시간 패턴(간단한 시간)

추가 정보: 일반 날짜 간단한 시간("g") 서식 지정자.
2009-06-15T13:45:30 -> 6/15/2009 오후 1:45(en-US)

2009-06-15T13:45:30 -> 15/06/2009 13:45(es-ES)

2009-06-15T13:45:30 -> 2009/6/15 13:45(zh-CN)
"G" 일반 날짜/시간 패턴(자세한 시간)입니다.

추가 정보: 일반 날짜 자세한 시간("G") 서식 지정자.
2009-06-15T13:45:30 -> 6/15/2009 1:45:30 PM(en-US)

2009-06-15T13:45:30 -> 15/06/2009 13:45:30(es-ES)

2009-06-15T13:45:30 -> 2009/6/15 13:45:30(zh-CN)
"M", "m" 월/일 패턴입니다.

추가 정보: 월("M", "m") 서식 지정자.
2009-06-15T13:45:30 -> 6월 15일(en-US)

2009-06-15T13:45:30 -> 15. juni (da-DK)

2009-06-15T13:45:30 -> 15 Juni(id-ID)
"O", "o" 왕복 날짜/시간 패턴입니다.

추가 정보: 왕복("O", "o") 서식 지정자.
DateTime 값:

2009-06-15T13:45:30 (DateTimeKind.Local) --> 2009-06-15T13:45:30.00000000-07:00

2009-06-15T13:45:30 (DateTimeKind.Utc) --> 2009-06-15T13:45:30.0000000Z

2009-06-15T13:45:30 (DateTimeKind.Unspecified) --> 2009-06-15T13:45:30.00000000

DateTimeOffset 값:

2009-06-15T13:45:30-07:00 --> 2009-06-15T13:45:30.00000000-07:00
"R", "r" RFC1123 패턴입니다.

추가 정보: RFC1123("R", "r") 서식 지정자.
DateTimeOffset 입력: 2009-06-15T13:45:30 -> 월, 15 6월 2009 20:45:30 GMT
DateTime 입력: 2009-06-15T13:45:30 -> 월, 15 6월 2009 13:45:30 GMT
"s" 정렬 가능한 날짜/시간 패턴입니다.

추가 정보: 정렬 가능한("s") 서식 지정자.
2009-06-15T13:45:30 (DateTimeKind.Local) -> 2009-06-15T13:45:30

2009-06-15T13:45:30 (DateTimeKind.Utc) -> 2009-06-15T13:45:30
"t" 간단한 시간 패턴입니다.

추가 정보: 간단한 시간("t") 서식 지정자.
2009-06-15T13:45:30 -> 오후 1:45(en-US)

2009-06-15T13:45:30 -> 13:45(hr-HR)

2009-06-15T13:45:30 -> 01:45 م(ar-EG)
"T" 자세한 시간 패턴

추가 정보: 자세한 시간("T") 서식 지정자.
2009-06-15T13:45:30 -> 오후 1:45:30(en-US)

2009-06-15T13:45:30 -> 13:45:30(hr-HR)

2009-06-15T13:45:30 -> 01:45:30 م(ar-EG)
"u" 정렬 가능한 유니버설 날짜/시간 패턴

추가 정보: 정렬 가능한 유니버설("u") 서식 지정자.
값 사용 DateTime : 2009-06-15T13:45:30 -> 2009-06-15 13:45:30Z

값 사용 DateTimeOffset : 2009-06-15T13:45:30 -> 2009-06-15 20:45:30Z
"U" 유니버설 전체 날짜/시간 패턴입니다.

추가 정보: 유니버설 전체("U") 서식 지정자.
2009-06-15T13:45:30 -> 2009년 6월 15일 월요일 오후 8:45:30(en-US)

2009-06-15T13:45:30 -> den 15 juni 2009 20:45:30 (sv-SE)

2009-06-15T13:45:30 -> Σσσα, 15 σ 2009 8:45:30 μμ (el-GR)
"Y", "y" 연도 월 패턴

추가 정보: 연도 월("Y") 서식 지정자.
2009-06-15T13:45:30 -> 2009년 6월(en-US)

2009-06-15T13:45:30 -> juni 2009(da-DK)

2009-06-15T13:45:30 -> Juni 2009(id-ID)
기타 모든 단일 문자 알 수 없는 지정자입니다. 런타임 FormatException을 throw합니다.

 

위 표의 원본 링크 

 

FORMAT 공식문서 링크