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 함수를 사용하는 것이 유용하다.
'DataBase > mssql' 카테고리의 다른 글
[MSSQL] 컬럼 검색하기 (0) | 2023.07.05 |
---|---|
MSSQL : FORMAT함수 (0) | 2023.06.07 |
SQL Server의 OUTPUT 절: 데이터 변경 작업의 결과 추적 및 활용 (0) | 2023.05.23 |
MSSQL DATEDIFF 함수를 활용한 날짜 간격 계산 (1) | 2023.05.19 |
STRING_SPLIT [파라미터 잘라서 활용하기] (0) | 2023.03.02 |