MSSQL 날짜포맷 – Format함수 및 Convert 함수

개요

MSSQL 날짜포맷 변경은 Format 함수를 이용하는 방법과 convert 함수를 이용하는 방법이 있습니다.
YYYYMMDD 형식을 예로 들었을 때, Format 함수를 이용하는 것이, Convert ( nchar(8), getdate(), 112) 보다는 형태가 직관적이라서 관리가 용이합니다. 그리고 format 함수는 날짜 뿐만 아니라 숫자의 포맷도 관리할 수 있습니다.

FORMAT 함수 구문

FORMAT( value, format [, culture ] )

Format 함수를 이용한 MSSQL 날짜포맷 예제

SELECT FORMAT(GETDATE(), 'yyyyMMdd')
    , FORMAT(GETDATE(), 'yyyy-MM*dd')
    , FORMAT(GETDATE(), 'yyyy/MM/dd')
    , FORMAT(GETDATE(), 'yyyy%MM\dd') 
mssql 날짜포맷 변경 결과

마지막 인수인 culture 를 지정하지 않고 실행한 결과입니다. ( 보통 지정하지 않고 사용합니다. )
기본적으로는 지정한 형식이 먹는데, 일부 예약된 기호들은( /, %, \ ) 안먹습니다.

yyyy/mm/dd 형태 예제

결과값이 yyyy/mm/dd 형태로 나오는 예제입니다. 마지막 인수에 en-US 를 넣어주면 / 로 구분된 날짜가 표시됩니다.

SELECT FORMAT(GETDATE(), 'yyyy/MM/dd', 'en-US')
FORMAT 함수를 이용한 MSSQL CONVERT 함수 실행 결과

Convert 함수를 이용한 MSSQL 날짜포맷 예제

SELECT CONVERT(NCHAR(10), GETDATE(), 120) AS C120
	 , CONVERT(NCHAR(8) , GETDATE(), 112) AS C112
CONVERT 함수를 이용한 MSSQL CONVERT 함수 실행 결과

Convert 함수 사용법

FORMAT 함수의 두 번째 인수에 들어갈 수 있는 값들

형식 지정자 설명 예제
“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합니다.

위 표는 ms 문서를 가져온 것입니다. 자세한 내용은 링크로 이동해서 읽어보시면 됩니다.
파라미터에 직접 넣어보면서 테스트해보면 금방 원하는 날짜포맷을 만들 수 있습니다.

FORMAT 함수를 이용한 숫자 형식 변환

DECLARE @A NUMERIC(28,8)
SET @A = 12345.5678
SELECT FORMAT(@A, '#,#.#')
		, FORMAT(@A, '0,0.00')
		, FORMAT(@A, '00000000000.00')
FORMAT 함수를 이용한 숫자형식 변환

숫자포맷 반올림 등 기타

format 함수 내에서 자동으로 반올림 되는 것이 싫으면 아래처럼 format 함수 내에서 첫번째 인수를 반올림/올림/버림 처리하면 됩니다.

SELECT FORMAT(FLOOR(1234.567*10)/10, '0,0.0')

FORMAT 함수 외에 STR 함수도 숫자포맷을 관리하는 데에 유용합니다.

MSSQL 문자열 함수 26개 정리
FORMAT 함수 MS 문서

Comments

No comments yet. Why don’t you start the discussion?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다