[MSSQL] 날짜 변환 방법 완벽 정리 (CONVERT, FORMAT)

SQL Server에서 문자열을 날짜로 변환하거나, 문자열을 날짜로 변환할 때 CONVERT, FORMAT, CAST 같은 다양한 함수를 사용하여 결과를 얻을 수 있다. CONVERT() 함수는 날짜 스타일 코드를 통해 입력 문자열의 형식을 명확하게 지정할 수 있으며, FORMAT() 함수는 출력 형태를 자유롭게 지정할 수 있어서 조금 더 직관적이고 쉽게 포맷을 지정할 수 있다. CAST 함수는 ANSI SQL 표준 함수이기 때문에 다양한 DBMS와 호환이 된다.

 

목차

 

날짜를 문자열로 변환 방법 (CONVERT, FORMAT)

SELECT CONVERT(VARCHAR, GETDATE(), 120)     AS result1
     , CONVERT(VARCHAR(10), GETDATE(), 120) AS result2
     , CONVERT(VARCHAR(16), GETDATE(), 120) AS result3

 

 

CONVERT(VARCHAR, GETDATE(), 120) :

현재 날짜와 시간을 스타일 코드 120 형식으로 전체 포맷 yyyy-mm-dd hh:mi:ss 형식을 출력된다.

 

CONVERT(VARCHAR(10), GETDATE(), 120) :

VARCHAR(10)은 앞 10자리만 출력되어 yyyy-mm-dd 형식의 날짜만 출력한다.

 

CONVERT(VARCHAR(16), GETDATE(), 120) :

VARCHAR(16)으로 길이를 지정하여 날짜와 시:분까지 (yyyy-mm-dd hh:mi)를 출력한다.

 

SELECT CONVERT(VARCHAR, GETDATE(), 112) AS result1
     , CONVERT(VARCHAR, GETDATE(), 111) AS result2
     , CONVERT(VARCHAR, GETDATE(), 102) AS result3

 

 

CONVERT 함수에서 다양한 스타일 코드를 사용하여 날짜를 문자열로 변환할 수 있다.

 

112 : yyyymmdd

111 : yyyy/mm/dd

102 : yyyy.mm.dd

 

SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss') AS result1
     , FORMAT(GETDATE(), 'yyyy-MM-dd')          AS result2
     , FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm')    AS result3

 

SQL Server 2012 이상에서는 FORMAT 함수를 사용하여 날짜의 출력 형식을 자유롭게 문자열로 출력할 수 있다.

포맷 문자열은 .NET 형식을 따르므로 'yyyy', 'MM', 'dd', 'HH', 'mm', 'ss' 대소문자를 정확히 써야 한다.

 

SELECT FORMAT(GETDATE(), 'yyyyMMdd')   AS result1
     , FORMAT(GETDATE(), 'yyyy/MM/dd') AS result2
     , FORMAT(GETDATE(), 'yyyy.MM.dd') AS result3

 

FORMAT 함수는 CONVERT 함수에 비하여 조금 더 직관적으로 포맷을 지정하여 출력할 수 있다.

 

문자열을 날짜로 변환 방법 (CONVERT, CAST)

SELECT CONVERT(DATE, '2026-06-12') AS result1
     , CONVERT(DATE, '2026/06/12') AS result2
     , CONVERT(DATE, '20260612')   AS result3

 

 

CONVERT 함수를 사용하여 yyyy-mm-dd, yyyy/mm/dd, yyyymmdd와 같은 형식 문자열을 날짜로 쉽게 변활 할 수 있다.

 

SELECT CONVERT(DATETIME, '2026-06-12 23:28:34') AS result1
     , CONVERT(DATETIME, '2026/06/12')          AS result2
     , CONVERT(DATETIME, '20260612')            AS result3

 

 

날짜 + 시간이 포함된 문자열인 경우 DATETIME 데이터 형식을 사용하여 문자열을 날짜로 변환하면 된다.

 

SELECT CONVERT(DATE, '06/12/2026', 101)              AS result1
     , CONVERT(DATE, '2026-06-12', 120)              AS result2
     , CONVERT(DATETIME, '2026-06-12 23:28:34', 120) AS result3

 

 

CONVERT() 함수에서 스타일 코드(101, 120...)를 지정하면, 문자열의 날짜 형식을 명확하게 해석하여 형 변환 오류를 방지할 수 있다.

 

SELECT CAST('2026-06-12' AS DATE)              AS result1
     , CAST('2026/06/12' AS DATE)              AS result2
     , CAST('20260612' AS DATE)                AS result3
     , CAST('2026-06-12 23:28:34' AS DATETIME) AS result4

 

 

CAST()는 ANSI SQL 표준 함수이다. 따라서 Oracle, PostgreSQL, MySQL 등 다양한 DBMS에서 공통적으로 사용 가능하다.

 

날짜를 문자열로 변환할 때는 CAST()보다는 CONVERT()와 스타일 코드를 활용하는 것이 오류 방지, 가독성 확보, 포맷 일관성 유지 등 훨씬 효율적일 수 있다.

 

날짜 스타일 코드(포맷) 정리표

 스타일 코드  포맷 형식
 100  mon dd yyyy hh:miAM
 101  mm/dd/yyyy
 102  yyyy.mm.dd
 103  dd/mm/yyyy
 104  dd.mm.yyyy
 105  dd-mm-yyyy
 106  dd mon yyyy
 107  Mon dd, yyyy
 108  hh:mm:ss
 109  mon dd yyyy hh:mi:ss:mmmAM
 110  mm-dd-yyyy
 111  yyyy/mm/dd
 112  yyyymmdd
 113  dd mon yyyy hh:mi:ss:mmm
 114  hh:mi:ss:mmm
 120  yyyy-mm-dd hh:mi:ss
 121  yyyy-mm-dd hh:mi:ss.mmm
 126  yyyy-mm-ddThh:mi:ss.mmm
 130  dd mon yyyy hh:mi:ss:mmmAM
 131  dd/mm/yyyy hh:mi:ss:mmmAM

 

 

댓글

Designed by JB FACTORY