프로그래밍/DB

[DB] MSSQL 날짜변환함수 CAST,CONVERT

ss-pro 2020. 10. 16. 00:17
반응형

MSSQL 날짜변환함수에 대하여 알아보겠습니다. 먼저 CAST, CONVERT 구문입니다. 

1
2
3
4
5
-- CAST Syntax:  
CAST ( expression AS data_type [ ( length ) ] )  
  
-- CONVERT Syntax:  
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

CAST문 CONVERT문 모두 형변환시에 사용하며 보통 CAST문의 경우는 산술연산이 필요할경우에 문자열을 숫자,날짜형으로 바꾸거나 숫자형식중 float,int의 연산등에 많이 사용하며, CONVERT문의 경우는 날짜값을 국가별로 포멧이나 사용하는 방식이 다르므로 사용자가 원하는 형태로 변환할떄 많이 사용됩니다. 

1. CAST문 
CAST문의 경우는 아래와 같이 산술연산시에 사용되면 문자열->날짜형식으로 바꾼후 DATEADD값을 사용해서 연산하는 예제입니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DECLARE @a             int 
DECLARE @b               varchar(10)
DECLARE @result         int
DECLARE @result_dt   datetime
DECLARE @str_dt          varchar(30)
 
set @a  = 10;
set @b = 10;
SET @result = @a + CAST(@b AS INT)         
 
--날짜연산
SET @str_dt= '2019-08-23 11:22'
SET @result_dt = (DATEADD("DAY",@a,CAST(@str_dt as datetime)))
 
PRINT  @result
PRINT  @result_dt
 

실행결과입니다. 

 

 

2. CONVERT문 
CONVERT문의 경우는 날짜형식을 사용자가 원하는 형태로 출력할때 많이 사용되며 현재시간을 자주사용하는 포멧의 형태로 변환해본 예제입니다. 마지막 Style값을 변경하여 다양한 날짜포멧의 결과를 얻을수 있습니다. 

1
2
3
4
5
SELECT GETDATE()                             '기본'
      ,CONVERT (NVARCHAR,GETDATE(),120)      '1'
      ,CONVERT (NVARCHAR,GETDATE(),23)       '2'
      ,CONVERT (NVARCHAR(10),GETDATE(),120)  '3'
      ,CONVERT (NVARCHAR(16),GETDATE(),120)  '4'      

 

 


3. CONVERT STYLE에 따른 결과값 

 

 

개인적으로는 120을 가장많이 이용합니다. 자주사용하는것 이외에는 기억이 안나는경우가 많이 일일이 찾아볼수 없어서 type은 120으로 지정한후 사이즈만 10,16이런식으로 변경해서 사용합니다.

 

 

 

보다 자세한 내용은 MSDN문서를 참고바라며 아래링크에서 참고하시면 됩니다. 
출처 및 참고
MSDN 링크 : docs.microsoft.com/ko-kr/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15

















 

MSDN 링크 : docs.microsoft.com/ko-kr/sql/t-sql/functions/cast-and-convert-transact-sql?f1url=%3FappId%3DDev14IDEF1%26l%3DKO-KR%26k%3Dk(CONVERT_TSQL);k(sql13.swb.tsqlresults.f1);k(sql13.swb.tsqlquery.f1);k(DevLang-TSQL)%26rd%3Dtrue&view=sql-server-ver15#date-and-time-styles