본문 바로가기
DataBase/mssql

CONVERT, FORMAT함수 : 날짜(DATE) 포맷 변환

by 노랑파랑 2023. 6. 2.
반응형

 

1.CONVERT

CONVERT 함수

CONVERT 함수는 데이터 형식을 변환하기 위해 사용된다. 날짜와 시간 데이터 형식을 변환하는 데 자주 사용되며, 다양한 날짜 및 시간 형식을 지원하고있다. CONVERT 함수의 기본 구문은 다음과 같다:

  
   CONVERT(data_type, expression, style)
  • data_type : 변환하려는 데이터의 형식
  • expression : 실제 데이터 값
  • style : 변환할 날짜 및 시간 형식.

 

CONVERT 함수 사용 예제

1. 날짜

가장 일반적인 사용 사례 중 하나인 날짜 형식을 변환하는 것을 알아보자.

예를 들어, '2023-06-01' 날짜를 '01-Jun-2023'과 같은 형식으로 변환하고 싶다고 할 때, CONVERT 함수를 사용하여 다음과 같이 변환할 수 있다:

   
   SELECT CONVERT(VARCHAR(11), '2023-06-01', 106) AS converted_date;

위의 예제에서 VARCHAR(11)은 변환된 값의 데이터 형식을 나타내며, 106은 날짜 형식이다. 이렇게 하면 '01-Jun-2023'과 같은 포맷으로 날짜가 변환된다.

 

2. 시간

시간 형식도 CONVERT 함수를 사용하여 변환할 수 있다.

예를 들어, '14:30:45' 시간을 '2:30 PM'과 같은 형식으로 변환할 때. 다음과 같이 CONVERT 함수를 사용하여 변환할 수 있다:

   
   SELECT CONVERT(VARCHAR(10), '14:30:45', 100) AS converted_time;

 

CONVERT 함수의 스타일(style) 옵션 표

쿼리  결과 코드
 CONVERT(CHAR(19), DATETIME, 0)  01 02 2000 1:14PM  MM DD YYYY H:MM
 CONVERT(CHAR(10), DATETIME, 1)  01/02/2000  MM/DD/YYYY
 CONVERT(CHAR(8), DATETIME, 2)  00.01.02  YY.MM.DD
 CONVERT(CHAR(8), DATETIME, 3)  02/01/00  DD/MM/YY
 CONVERT(CHAR(8), DATETIME, 4)  02.01.00  DD.MM.YY
 CONVERT(CHAR(8), DATETIME, 5)  02-01-00  DD-MM-YY
 CONVERT(CHAR(8), DATETIME, 6)  02 01 00  DD MM YY
 CONVERT(CHAR(9), DATETIME, 7)  01 02, 00  MM DD, YY
 CONVERT(CHAR(8), DATETIME, 8)  13:14:15  HH:MM:SS
 CONVERT(CHAR(26), DATETIME, 9)  01 02 2000 1:14:15.678PM  NN DD YYYY H:MM:SS.MS
 CONVERT(CHAR(8), DATETIME, 10)  01-02-00  MM-DD-YY
 CONVERT(CHAR(8), DATETIME, 11)  02/01/00  DD/MM/YY
 CONVERT(CHAR(6), DATETIME, 12)  000102  YYMMDD
 CONVERT(CHAR(24), DATETIME, 13)  02 01 2000 13:14:15.678  DD MM YYYY HH:MM:SS.MS
 CONVERT(CHAR(12), DATETIME, 14)  13:14:15.678  HH:MM:SS.MS
 CONVERT(CHAR(19), DATETIME, 20)  2000-01-02 13:14:15  YYYY-MM-DD HH:MM:SS
 CONVERT(CHAR(23), DATETIME, 21)  2000-01-02 13:14:15.678 YYYY-MM-DD HH:MM:SS.MS
 CONVERT(CHAR(20), DATETIME, 22)  01/02/00 1:14:15 PM  MM/DD/YY H:M:S
CONVERT(CHAR(10), DATETIME, 23) 2000-01-02 YYYY-MM-DD
 CONVERT(CHAR(8), DATETIME, 24)  13:14:15  HH:MM:SS
 CONVERT(CHAR(23), DATETIME, 25)  2000-01-02 13:14:15.678  YYYY-MM-DD HH:MM:SS.MS
 CONVERT(CHAR(19), DATETIME, 100)  01 02 2000 1:02PM  MM DD YYYY H:MM
 CONVERT(CHAR(10), DATETIME, 101)  01/02/2000  MM/DD/YYYY
 CONVERT(CHAR(10), DATETIME, 102)  2000.01.02  YYYY.MM.DD
 CONVERT(CHAR(10), DATETIME, 103)  02/01/2000  DD/MM/YYYY
 CONVERT(CHAR(10), DATETIME, 104)  02/01/2000  DD/MM/YYYY
 CONVERT(CHAR(10), DATETIME, 105)  02-01-2000  DD-MM-YYYY
 CONVERT(CHAR(11), DATETIME, 106)  02 01 2000  DD MM YYYY
 CONVERT(CHAR(12), DATETIME, 107)  01 02, 2000  MM DD, YYYY
 CONVERT(CHAR(8), DATETIME, 108)  13:14:15  HH:MM:SS
 CONVERT(CHAR(26), DATETIME, 109)  01 02 2000 1:14:15.678PM  MM DD YYYY H:MM:DD.MS
 CONVERT(CHAR(10), DATETIME, 110)  01-02-2000  MM-DD-YYYY
 CONVERT(CHAR(10), DATETIME, 111)  2000/01/02  YYYY/MM/DD
CONVERT(CHAR(8), DATETIME, 112)  20000102  YYYYMMDD
 CONVERT(CHAR(24), DATETIME, 113)  02 01 2000 13:14:15.678  DD MM YYYY HH:MM:DD.MS
 CONVERT(CHAR(12), DATETIME, 114)  13:14:15:678  HH:MM:DD:MS
 CONVERT(CHAR(19), DATETIME, 120)  2000-01-02 13:14:15  YYYY-MM-DD HH:MM:SS
 CONVERT(CHAR(23), DATETIME, 121)  2000-01-02 13:14:15.678  YYYY-MM-DD HH:MM:SS.MS
 CONVERT(CHAR(23), DATETIME, 126)  2000-01-02T13:14:15.678  YYYY-MM-DDT HH:MM:SS.MS
 CONVERT(CHAR(23), DATETIME, 127)  2000-01-02T13:14:15.678  YYYY-MM-DDT HH:MM:SS.MS
 CONVERT(CHAR(25), DATETIME, 131)  1/06/1421 1:13:14:678PM  

 

2. FORMAT

SQL Server 2012 버전부터 FORMAT 함수가 추가되었다. 이 함수의 경우 날짜를 생성할 때 원하는 포맷의 형태로 생성할 수 있다.

FORMAT 함수

   
   FORMAT (value, format)
  • value : 변환하려는 데이터 값
  • format : 변환할 날짜 및 시간 형식

 

FORMAT 함수 사용 예제

1.날짜

위 CONVERT함수와 같은 예제를 보면 ('2023-06-01'를 '01-Jun-2023'과 같은 형식으로 변환) CONVERT보다 더 쉽게 사용 할 수 있다.

   
    SELECT FORMAT('2023-06-01', 'dd-MMM-yyyy') AS converted_date;

 

2.시간

시간도 마찬가지로 아래와 같이 사용하면 된다.

'14:30:45'을 '2:30 PM'로 변환

   
   SELECT FORMAT('14:30:45', 'h:mm tt') AS converted_time;

 

FORMAT 함수의 날짜 서식 변환 표

   
   DECLARE @Date DATETIME = '2023-06-02 00:01:02.333'

   SELECT FORMAT(@Date, option)

아래 날짜 서식의 경우 여러개를 종합하여 사용 할 수 있다.

예를 들면 아래와 같다.

    
    SELECT FORMAT(@date, N'yyyy년 MM월 dd일 tt HH:m:s')

 

 

option result
yyyy 2023
yy 23
MMMM 6월
MM 06
M 6
dddd 금요일
ddd
dd 02
d 2
HH 00
H 0
hh 12
h 12
mm 01
m 1
ss 02
s 2
tt 오전
t
fff 333
ff 33
f 3

 

날짜 생성 시 변환 표

 

option result
D 2023년 6월 2일 금요일
d 2023-06-02
F 2023년 6월 2일 금요일 오전 12:01:02
f 2023년 6월 2일 금요일 오전 12:01
G 2023-06-02 오전 12:01:02
g 2023-06-02 오전 12:01
M 6월 2일
O 2023-06-02T00:01:02.3330000
R Fri, 02 Jun 2023 00:01:02 GMT
s 2023-06-02T00:01:02
T 오전 12:01:02
t 오전 12:01
U 2023년 6월 1일 목요일 오후 3:01:02
u 2023-06-02 00:01:02Z
Y 2023년 6월

 

 

3. CONVERT함수와 FORMAT함수의 다른 점

문법 및 사용법:

  • CONVERT 함수: CONVERT 함수는 데이터 형식을 변환하는 데 사용한다. 기본 구문은 CONVERT(data_type, expression, style) 형식으로 데이터 형식과 스타일 옵션을 지정해야 한다.
  • FORMAT 함수: FORMAT 함수는 값을 지정된 형식으로 서식화하는 데 사용한다. 기본 구문은 FORMAT (value, format) 형식으로 서식화할 값을 지정하고 원하는 형식을 포함한 서식 문자열을 지정해야 한다.

 

유연성

  • CONVERT 함수: CONVERT 함수는 날짜와 시간 데이터를 다양한 포맷으로 변환할 수 있다. 일반적으로 정해진 스타일 옵션을 사용하여 변환한다.
  • FORMAT 함수: FORMAT 함수는 날짜와 시간 데이터를 사용자가 원하는 형식으로 더 유연하게 변환할 수 있다. 서식 문자열을 사용하여 원하는 포맷을 자세히 지정할 수 있다.

 

성능

  • CONVERT 함수: CONVERT 함수는 내부적으로 데이터 형식을 변환하는데 최적화되어 있으며, 대량의 데이터를 빠르게 처리하는 데 효율적이다.
  • FORMAT 함수: FORMAT 함수는 더 많은 유연성을 제공하지만, 내부적으로 문자열 연산을 수행하기 때문에 대량의 데이터를 처리할 때 성능이 상대적으로 느릴 수 있다.

따라서, 포맷 변환이 간단하고 미리 정의된 스타일 옵션을 사용해야 하는 경우에는 CONVERT 함수를 사용하는 것이 적합한 반면에 더 유연한 포맷 제어가 필요하거나 복잡한 형식 변환이 필요한 경우에는 FORMAT 함수를 사용하는 것이 유용하다.

반응형