CAST 및 CONVERT(Transact-SQL)CAST and CONVERT (Transact-SQL)

이 항목은 다음에 적용됩니다. 예SQL Server(2008부터)예Azure SQL Database예Azure SQL Data Warehouse 예병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

식을 다른 데이터 형식으로 변환합니다.Converts an expression of one data type to another.
예를 들어 다음 예제에서는 두 개의 다른 데이터 형식, 정밀도 수준이 다른으로 입력된 datatype을 변경 합니다.For example, the following examples change the input datatype, into two other datatypes, with different levels of precision.

SELECT 9.5 AS Original, CAST(9.5 AS int) AS int, 
    CAST(9.5 AS decimal(6,4)) AS decimal;
SELECT 9.5 AS Original, CONVERT(int, 9.5) AS int, 
    CONVERT(decimal(6,4), 9.5) AS decimal;

결과 집합은 다음과 같습니다.Here is the result set.

원문 언어Original intint decimaldecimal
9.59.5 99 9.50009.5000

많은 예제 이 항목의 아래쪽에 있습니다.Many examples are at the bottom of this topic.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

-- Syntax for CAST:  
CAST ( expression AS data_type [ ( length ) ] )  

-- Syntax for CONVERT:  
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )  

인수Arguments

expressionexpression
유효한 합니다.Is any valid expression.

data_typedata_type
대상 데이터 형식입니다.Is the target data type. 여기에 xml, bigint, 및 sql_variant합니다.This includes xml, bigint, and sql_variant. 별칭 데이터 형식은 사용할 수 없습니다.Alias data types cannot be used.

lengthlength
대상 데이터 형식의 길이를 지정하는 선택적 정수입니다.Is an optional integer that specifies the length of the target data type. 기본값은 30입니다.The default value is 30.

스타일style
CONVERT 함수를 변환 하는 방법을 지정 하는 정수 식 합니다.Is an integer expression that specifies how the CONVERT function is to translate expression. style이 NULL이면 NULL이 반환됩니다.If style is NULL, NULL is returned. 범위 따라 사용자가 data_type합니다.The range is determined by data_type.

반환 형식Return types

반환 변환할 data_type합니다.Returns expression translated to data_type.

날짜 및 시간 스타일Date and Time Styles

날짜 또는 시간 데이터 형식, 스타일 다음 표에 표시 된 값 중 하나일 수 있습니다.When expression is a date or time data type, style can be one of the values shown in the following table. 다른 값은 0으로 처리됩니다.Other values are processed as 0. 부터는 SQL Server 2012SQL Server 2012에서 변환할 때 지원 되는 유일한 스타일 날짜 및 시간에 형식을 datetimeoffset 은 0 또는 1입니다.Beginning with SQL Server 2012SQL Server 2012, the only styles that are supported when converting from date and time types to datetimeoffset are 0 or 1. 다른 모든 변환 스타일은 오류 9809를 반환합니다.All other conversion styles return error 9809.

참고

SQL ServerSQL Server는 쿠웨이트 알고리즘을 사용하여 아랍어 스타일의 날짜 형식을 지원합니다. supports the date format in Arabic style by using the Kuwaiti algorithm.

두 자리 연도 (yy) (1)Without century (yy) (1) 네 자리 연도(yyyy)With century (yyyy) StandardStandard 입/출력 (3)Input/Output (3)
- 0 또는 100 (1,2)0 or 100 (1,2) datetime 및 smalldatetime의 기본값Default for datetime and smalldatetime mon dd yyyy hh:miAM(또는 PM)mon dd yyyy hh:miAM (or PM)
11 101101 미국U.S. 1 = mm/dd/yy1 = mm/dd/yy
101 = mm/dd/yyyy101 = mm/dd/yyyy
22 102102 ANSIANSI 2 = yy.mm.dd2 = yy.mm.dd
102 = yyyy.mm.dd102 = yyyy.mm.dd
33 103103 영국/프랑스British/French 3 = dd/mm/yy3 = dd/mm/yy
103 = dd/mm/yyyy103 = dd/mm/yyyy
44 104104 독일어German 4 = dd.mm.yy4 = dd.mm.yy
104 = dd.mm.yyyy104 = dd.mm.yyyy
55 105105 이탈리아어Italian 5 = dd-mm-yy5 = dd-mm-yy
105 = dd-mm-yyyy105 = dd-mm-yyyy
66 106 (1)106 (1) - 6 = dd mon yy6 = dd mon yy
106 = dd mon yyyy106 = dd mon yyyy
77 107 (1)107 (1) - 7 = Mon dd, yy7 = Mon dd, yy
107 = Mon dd, yyyy107 = Mon dd, yyyy
88 108108 - hh:mi:sshh:mi:ss
- 9 또는 109 (1,2)9 or 109 (1,2) 기본값 + 밀리초Default + milliseconds mon dd yyyy hh:mi:ss:mmmAM(또는 PM)mon dd yyyy hh:mi:ss:mmmAM (or PM)
1010 110110 USAUSA 10 = mm-dd-yy10 = mm-dd-yy
110 = mm-dd-yyyy110 = mm-dd-yyyy
1111 111111 일본JAPAN 11 = yy/mm/dd11 = yy/mm/dd
111 = yyyy/mm/dd111 = yyyy/mm/dd
1212 112112 ISOISO 12 = yymmdd12 = yymmdd
112 = yyyymmdd112 = yyyymmdd
- 13 또는 113 (1,2)13 or 113 (1,2) 유럽 기본값 + 밀리초Europe default + milliseconds dd mon yyyy hh:mi:ss:mmm(24h)dd mon yyyy hh:mi:ss:mmm(24h)
1414 114114 - hh:mi:ss:mmm(24h)hh:mi:ss:mmm(24h)
- 20 또는 120 (2)20 or 120 (2) ODBC 표준ODBC canonical yyyy-mm-dd hh:mi:ss(24h)yyyy-mm-dd hh:mi:ss(24h)
- 21 또는 121 (2)21 or 121 (2) time, date, datetime2 및 datetimeoffset의 ODBC 표준(밀리초 포함) 기본값ODBC canonical (with milliseconds) default for time, date, datetime2, and datetimeoffset yyyy-mm-dd hh:mi:ss.mmm(24h)yyyy-mm-dd hh:mi:ss.mmm(24h)
- 126 (4)126 (4) ISO8601ISO8601 yyyy-mm-ddThh:mi:ss.mmm(공백 없이)yyyy-mm-ddThh:mi:ss.mmm (no spaces)
참고: (mmm) 시간 (밀리초)에 대 한 값이 0 이면 밀리초 값 표시 되지 않습니다.Note: When the value for milliseconds (mmm) is 0, the millisecond value is not displayed. 예를 들어, 값 '2012-11-07T18:26:20.000은 '2012-11-07T18:26:20'으로 표시됩니다.For example, the value '2012-11-07T18:26:20.000 is displayed as '2012-11-07T18:26:20'.
- 127(6, 7)127(6, 7) ISO8601(Z 표준 시간대)ISO8601 with time zone Z. yyyy-mm-ddThh:mi:ss.mmmZ (공백 없이)yyyy-mm-ddThh:mi:ss.mmmZ (no spaces)
참고: (mmm) 시간 (밀리초)에 대 한 값이 0 이면 밀리초 값 표시 되지 않습니다.Note: When the value for milliseconds (mmm) is 0, the milliseconds value is not displayed. 예를 들어, 값 '2012-11-07T18:26:20.000은 '2012-11-07T18:26:20'으로 표시됩니다.For example, the value '2012-11-07T18:26:20.000 is displayed as '2012-11-07T18:26:20'.
- 130 (1,2)130 (1,2) 회교식 (5)Hijri (5) dd mon yyyy hh:mi:ss:mmmAMdd mon yyyy hh:mi:ss:mmmAM
이 스타일에서 mon은 전체 월 이름에 대한 다중 토큰 회교식 유니코드 표현을 나타냅니다.In this style, mon represents a multi-token Hijri unicode representation of the full month's name. 이 값 않습니다에서 올바르게 렌더링 되지 기본 미국 SSMS 설치 합니다.This value does not render correctly on a default US installation of SSMS.
- 131 (2)131 (2) 회교식 (5)Hijri (5) dd/mm/yyyy hh:mi:ss:mmmAMdd/mm/yyyy hh:mi:ss:mmmAM

1 이러한 스타일 값 비결 정적 결과 반환 합니다.1 These style values return nondeterministic results. 모든 (yy)(두 자리 연도) 스타일과 (yyyy)(네 자리 연도) 스타일의 하위 집합을 포함합니다.Includes all (yy) (without century) styles and a subset of (yyyy) (with century) styles.

2 기본값 (스타일* 0* 또는 100, 9 또는 109, 13 또는 113, 20 또는 120, 및 21 또는 121) 항상 네 자리 연도 (yyyy)를 반환 합니다.2 The default values (style* 0* or 100, 9 or 109, 13 or 113, 20 or 120, and 21 or 121) always return the century (yyyy).

3 변환할 때 입력 datetime; 출력를 문자 데이터로 변환 하는 경우.3 Input when you convert to datetime; output when you convert to character data.

4 XML 사용 하도록 설계 되었습니다.4 Designed for XML use. 변환에 대 한 datetime 또는 smalldatetime 를 문자 데이터로 위의 표에 설명 된 대로 출력 형식은입니다.For conversion from datetime or smalldatetime to character data, the output format is as described in the previous table.

5 회교식 달력 시스템에는 여러 가지 형태가 됩니다.5 Hijri is a calendar system with several variations. SQL ServerSQL Server에서는 쿠웨이트 알고리즘을 사용합니다. uses the Kuwaiti algorithm.

중요

기본적으로 SQL ServerSQL Server는 구분 연도 2049년을 기준으로 두 자리 연도를 해석합니다.By default, SQL ServerSQL Server interprets two-digit years based on a cutoff year of 2049. 즉 두 자리 연도 49는 2049년을 의미하고 두 자리 연도 50은 1950년을 의미합니다.That is, the two-digit year 49 is interpreted as 2049 and the two-digit year 50 is interpreted as 1950. Automation 개체를 기반으로 하는 응용 프로그램 등 많은 클라이언트 응용 프로그램에서는 2030년을 구분 연도로 사용합니다.Many client applications, such as those based on Automation objects, use a cutoff year of 2030. SQL ServerSQL Server사용 하는 구분 연도 변경 하는 두 자리 연도 구분 구성 옵션을 제공 SQL ServerSQL Server 날짜를 일관성 있게 처리할 수 있습니다. provides the two digit year cutoff configuration option that changes the cutoff year used by SQL ServerSQL Server and allows for the consistent treatment of dates. 네 자리 연도를 지정하는 것이 더 편리합니다.We recommend specifying four-digit years.

6 에서 문자 데이터를 캐스팅 하는 경우에 지원 datetime 또는 smalldatetime합니다.6 Only supported when casting from character data to datetime or smalldatetime. 만 나타내는 문자 데이터를 날짜 또는 시간 구성 요소만 때로 캐스팅 되는 datetime 또는 smalldatetime 데이터 형식 지정 되지 않은 시간 구성 요소가로 설정 되어 00:00:00.000, 있고는 지정 되지 않은 날짜 구성 요소는 1900-01-01로 설정 됩니다.When character data that represents only date or only time components is cast to the datetime or smalldatetime data types, the unspecified time component is set to 00:00:00.000, and the unspecified date component is set to 1900-01-01.

7선택적 표준 시간대 표시기 Z, 하는 데 XML을 매핑할 쉽게 datetime 시간대 정보가 있는 값 SQL ServerSQL Server datetime 시간대가 없는 밑줄이 있는 값 .7The optional time zone indicator, Z, is used to make it easier to map XML datetime values that have time zone information to SQL ServerSQL Server datetime values that have no time zone. Z는 표준 시간대 UTC-0에 대한 표시기입니다.Z is the indicator for time zone UTC-0. 다른 표준 시간대는 + 또는 - 방향의 HH:MM 오프셋으로 나타냅니다.Other time zones are indicated with HH:MM offset in the + or - direction. 예를 들면 2006-12-12T23:45:12-08:00과 같습니다.For example: 2006-12-12T23:45:12-08:00.

문자 데이터로 변환 하는 경우 smalldatetime, 초 나 밀리초가 포함 된 스타일이 해당이 위치에 0을 표시 합니다.When you convert to character data from smalldatetime, the styles that include seconds or milliseconds show zeros in these positions. 변환 하면 원치 않는 날짜 부분을 잘라낼 수 datetime 또는 smalldatetime 적절 한 사용 하 여 값 char 또는 varchar 데이터 길이 입력 합니다.You can truncate unwanted date parts when you convert from datetime or smalldatetime values by using an appropriate char or varchar data type length.

변환할 때 datetimeoffset 에서 한 번 포함 하는 스타일을 사용 하 여 문자 데이터, 표준 시간대 오프셋은 결과에 추가 합니다.When you convert to datetimeoffset from character data with a style that includes a time, a time zone offset is appended to the result.

float 및 real 스타일float and real styles

float 또는 실제, 스타일 다음 표에 표시 된 값 중 하나일 수 있습니다.When expression is float or real, style can be one of the values shown in the following table. 다른 값은 0으로 처리됩니다.Other values are processed as 0.

Value 출력Output
0 (기본값)0 (default) 최대 6자리 수입니다.A maximum of 6 digits. 해당되는 경우 과학 표기법을 사용하세요.Use in scientific notation, when appropriate.
11 항상 8 자리 수입니다.Always 8 digits. 항상 과학 표기법을 사용하세요.Always use in scientific notation.
22 항상 16자리 수입니다.Always 16 digits. 항상 과학 표기법을 사용하세요.Always use in scientific notation.
33 항상 17 자리 수입니다.Always 17 digits. 무손실 변환에 사용 됩니다.Use for lossless conversion. 이 스타일으로 모든 고유 float 또는 real 값을 고유한 문자 문자열로 변환 하도록 보장 됩니다.With this style, every distinct float or real value is guaranteed to convert to a distinct character string.
적용 대상: Azure SQL 데이터베이스Azure SQL Database에서 시작 하 고 SQL Server 2016SQL Server 2016합니다.Applies to: Azure SQL 데이터베이스Azure SQL Database, and starting in SQL Server 2016SQL Server 2016.
126, 128, 129126, 128, 129 이전 버전과의 호환성을 위해 제공되며 이후 릴리스에서는 더 이상 사용되지 않을 수 있습니다.Included for legacy reasons and might be deprecated in a future release.

money 및 smallmoney 스타일money and smallmoney styles

money 또는 smallmoney, 스타일 다음 표에 표시 된 값 중 하나일 수 있습니다.When expression is money or smallmoney, style can be one of the values shown in the following table. 다른 값은 0으로 처리됩니다.Other values are processed as 0.

Value 출력Output
0 (기본값)0 (default) 소수점 앞 세 자리마다 쉼표를 사용하지 않으며 소수점 이하 두 자리인 수입니다(예: 4235.98).No commas every three digits to the left of the decimal point, and two digits to the right of the decimal point; for example, 4235.98.
11 소수점 앞 세 자리마다 쉼표가 있으며 소수점 이하 두 자리인 수입니다(예: 3,510.92).Commas every three digits to the left of the decimal point, and two digits to the right of the decimal point; for example, 3,510.92.
22 소수점 앞 세 자리마다 쉼표를 사용하지 않으며 소수점 이하 네 자리인 수입니다(예: 4235.9819).No commas every three digits to the left of the decimal point, and four digits to the right of the decimal point; for example, 4235.9819.
126126 char(n) 또는 varchar(n)으로 변환하는 경우 스타일 2와 같습니다.Equivalent to style 2 when converting to char(n) or varchar(n)

xml 스타일xml styles

xml, 스타일 다음 표에 표시 된 값 중 하나일 수 있습니다.When expression is xml, style can be one of the values shown in the following table. 다른 값은 0으로 처리됩니다.Other values are processed as 0.

Value 출력Output
0 (기본값)0 (default) 불필요한 공백을 삭제하고 내부 DTD 하위 집합을 허용하지 않는 기본 구문 분석 동작을 사용합니다.Use default parsing behavior that discards insignificant white space and does not allow for an internal DTD subset.
참고: 변환할 때는 xml 데이터 형식을 SQL ServerSQL Server 무효 공백을 다르게 처리 보다 XML 1.0에 있습니다.Note: When you convert to the xml data type, SQL ServerSQL Server insignificant white space is handled differently than in XML 1.0. 자세한 내용은 참조 XML 데이터 인스턴스 만들기합니다.For more information, see Create Instances of XML Data.
11 불필요한 공백을 유지합니다.Preserve insignificant white space. 이 스타일 설정 기본 xml: space 동일 하 게 작동 하기 위한 처리 처럼 xml: space = "preserve" 가 대신 지정 된 합니다.This style setting sets the default xml:space handling to behave the same as if xml:space="preserve" has been specified instead.
22 제한된 내부 DTD 하위 집합 처리를 설정합니다.Enable limited internal DTD subset processing.

설정된 경우 서버가 내부 DTD 하위 집합에 제공된 다음 정보를 사용하여 유효성을 검사하지 않는 구문 분석 작업을 수행합니다.If enabled, the server can use the following information that is provided in an internal DTD subset to perform nonvalidating parse operations.
-특성에 대 한 기본값이 적용 됩니다.- Defaults for attributes are applied.
-내부 엔터티 참조가 해결 되 고 확장 합니다.- Internal entity references are resolved and expanded.
-DTD 콘텐츠 모델은 구문이 올바른지 확인 합니다.- The DTD content model is checked for syntactical correctness.
파서가 외부 DTD 하위 집합을 무시합니다.The parser ignores external DTD subsets. 또한 참조 위해 XML 선언을 평가 하지 않습니다 여부는 독립 실행형 특성이 설정 되어 또는 없습니다, 대신 독립 실행형 말 이죠 XML 인스턴스를 구문 분석 되지만 문서입니다.It also does not evaluate the XML declaration to see whether the standalone attribute is set yes or no, but instead parses the XML instance as if it is a stand-alone document.
33 불필요한 공백을 유지하고 제한된 내부 DTD 하위 집합 처리를 설정합니다.Preserve insignificant white space and enable limited internal DTD subset processing.

이진 스타일Binary styles

binary (n), varbinary (n), char (n), 또는 varchar (n), 스타일 다음 표에 표시 된 값 중 하나일 수 있습니다.When expression is binary(n), varbinary(n), char(n), or varchar(n), style can be one of the values shown in the following table. 여기에 없는 스타일 값은 오류를 반환합니다.Style values that are not listed in the table return an error.

Value 출력Output
0 (기본값)0 (default) ASCII 문자를 이진 바이트로 또는 이진 바이트를 ASCII 문자로 변환합니다.Translates ASCII characters to binary bytes or binary bytes to ASCII characters. 각 문자 또는 바이트는 1:1로 변환됩니다.Each character or byte is converted 1:1.
경우는 data_type 이진 형식이 문자 0x는 결과의 왼쪽에 추가 됩니다.If the data_type is a binary type, the characters 0x are added to the left of the result.
1, 21, 2 경우는 data_type 이 binary 형식이 식에는 문자 식 이어야 합니다.If the data_type is a binary type, the expression must be a character expression. 짝수 개의 16 진수 숫자의 수로 구성 해야 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, a, b, c, d, e, f).The expression must be composed of an even number of hexadecimal digits (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, a, b, c, d, e, f). 경우는 스타일 1로 설정 되는 문자 0 x 이어야 합니다 처음 두 문자 식에 있습니다.If the style is set to 1 the characters 0x must be the first two characters in the expression. 식에 홀수 개의 문자나 유효하지 않은 문자가 포함되어 있으면 오류가 발생합니다.If the expression contains an odd number of characters or if any of the characters are invalid an error is raised.
변환된 된 식의 길이가의 길이 보다 큰 경우는 data_type 결과 오른쪽이 잘렸습니다.If the length of the converted expression is greater than the length of the data_type the result is right truncated.
고정 길이 data_types 변환된 된 결과 결과의 오른쪽에 0이 추가 보다 크거나 합니다.Fixed length data_types that are larger than the converted result has zeros added to the right of the result.
data_type이 문자 유형이면 식이 이진 식이어야 합니다.If the data_type is a character type, the expression must be a binary expression. 각 이진 문자는 두 개의 16진수 문자로 변환됩니다.Each binary character is converted into two hexadecimal characters. 변환된 된 식의 길이 보다 크면는 data_type 길이, 오른쪽 잘릴 수 있습니다.If the length of the converted expression is greater than the data_type length, it will be right truncated.
경우는 data_type 은 고정 크기 문자 유형이 고 변환된 된 결과의 길이가의 길이 보다 작으면는 data_type; 한도 유지 하기 위해 변환된 된 식의 오른쪽에 공백이 추가 되어 16 진수의 수입니다.If the data_type is a fix sized character type and the length of the converted result is less than its length of the data_type; spaces are added to the right of the converted expression to maintain an even number of hexadecimal digits.
0 x에 대 한 변환된 된 결과의 왼쪽에 추가할 문자 스타일 1입니다.The characters 0x will be added to the left of the converted result for style 1.

암시적 변환Implicit conversions

암시적 변환은 CAST 또는 CONVERT 함수를 지정하지 않은 상태에서 발생하는 변환이고Implicit conversions are those conversions that occur without specifying either the CAST or CONVERT function. 명시적 변환은 CAST 또는 CONVERT 함수를 지정해야 발생하는 변환입니다.Explicit conversions are those conversions that require the CAST or CONVERT function to be specified. 다음 그림에서는 SQL ServerSQL Server 시스템 제공 데이터 형식에 허용된 모든 명시적 및 암시적 데이터 형식 변환을 보여 줍니다.The following illustration shows all explicit and implicit data type conversions that are allowed for SQL ServerSQL Server system-supplied data types. 여기에 xml, bigint, 및 sql_variant합니다.These include xml, bigint, and sql_variant. 할당에 암시적 변환이 이루어지지는 sql_variant 데이터 형식으로 암시적 변환이 있지만 sql_variant합니다.There is no implicit conversion on assignment from the sql_variant data type, but there is implicit conversion to sql_variant.

이 차트는의 다운로드 가능한 PDF 파일로 사용할 수는 Microsoft 다운로드 센터합니다.This chart is available as a downloadable PDF file at the Microsoft Download Center.

데이터 형식 변환 표Data type conversion table

간에 변환 하는 경우 datetimeoffset 및 문자 형식 char, varchar, nchar, 및 nvarchar 변환 된 표준 시간대 오프셋된 부분의 HH 및 MM-08 예를 들어, 두 자리는 항상: 00입니다.When you convert between datetimeoffset and the character types char, varchar, nchar, and nvarchar the converted time zone offset part should always be double digits for both HH and MM for example, -08:00.

참고

유니코드 데이터는 항상 짝수 바이트의 수를 사용 하므로 주의 변환할 때 이진 또는 varbinary 유니코드 데이터 형식을 지원 합니다.Because Unicode data always uses an even number of bytes, use caution when you convert binary or varbinary to or from Unicode supported data types. 예를 들어 SELECT CAST(CAST(0x41 AS nvarchar) AS varbinary) 변환은 16진수 값 41이 아니라 4100을 반환합니다.For example, the following conversion does not return a hexadecimal value of 41; it returns 4100: SELECT CAST(CAST(0x41 AS nvarchar) AS varbinary).

큰 값 데이터 형식Large-value data types

큰 값 데이터 형식 발생 보다 작은 같은 암시적 및 명시적 변환 동작 구체적으로 varchar, nvarcharvarbinary데이터 형식입니다.Large-value data types exhibit the same implicit and explicit conversion behavior as their smaller counterparts, specifically the varchar, nvarchar and varbinary data types. 그러나 다음 지침을 고려해야 합니다.However, you should consider the following guidelines:

  • 변환 이미지varbinary (max) 그 반대로 변환 하는 암시적 변환이 되 고 간의 변환 텍스트varchar (max), 및 ntextnvarchar (max)합니다.Conversion from image to varbinary(max) and vice-versa is an implicit conversion, and so are conversions between text and varchar(max), and ntext and nvarchar(max).
  • 와 같은 큰 값 데이터에서 변환 형식을 varchar (max)을 같은 더 작은 정수 데이터 형식 varchar, 암시적 변환이 있지만 큰 값에 대 한 너무 큰 경우에 잘림이 지정 된 길이 보다 작은 데이터 형식입니다.Conversion from large-value data types, such as varchar(max), to a smaller counterpart data type, such as varchar, is an implicit conversion, but truncation occurs if the large value is too big for the specified length of the smaller data type.
  • 변환 varchar, nvarchar, 또는 varbinary 해당의 큰 값 데이터 형식을 암시적으로 수행 합니다.Conversion from varchar, nvarchar, or varbinary to their corresponding large-value data types is performed implicitly.
  • 변환 된 sql_variant 큰 값 데이터 형식에 데이터 형식이 명시적 변환 합니다.Conversion from the sql_variant data type to the large-value data types is an explicit conversion.
  • 큰 값 데이터 형식을 변환할 수 없습니다는 sql_variant 데이터 형식입니다.Large-value data types cannot be converted to the sql_variant data type.

변환 하는 방법에 대 한 자세한 내용은 xml 참조 데이터 형식, XML 데이터 인스턴스 만들기합니다.For more information about how to convert from the xml data type, see Create Instances of XML Data.

XML 데이터 형식입니다.xml data type

명시적 또는 암시적으로 캐스팅할 때는 xml 데이터 형식을 문자열 또는 바이너리 데이터 형식으로의 콘텐츠는 xml 데이터 형식이 규칙의 집합에 따라 직렬화 됩니다.When you explicitly or implicitly cast the xml data type to a string or binary data type, the content of the xml data type is serialized based on a set of rules. 이러한 규칙에 대 한 정보를 참조 하십시오. XML 데이터 직렬화 정의합니다.For information about these rules, see Define the Serialization of XML Data. 다른 데이터 형식으로 변환 하는 방법에 대 한 내용은 xml 참조 데이터 형식, XML 데이터 인스턴스 만들기합니다.For information about how to convert from other data types to the xml data type, see Create Instances of XML Data.

text 및 image 데이터 형식text and image data types

에 대 한 자동 데이터 형식 변환은 지원 되지 않습니다는 텍스트이미지 데이터 형식입니다.Automatic data type conversion is not supported for the text and image data types. 명시적으로 변환할 수 텍스트 데이터를 문자 데이터로 및 이미지 데이터를 이진 또는 varbinary, 최대 길이 8000 하지만 바이트 수입니다.You can explicitly convert text data to character data, and image data to binary or varbinary, but the maximum length is 8000 bytes. 문자를 포함 하는 문자 식으로 변환 하는 등 잘못 된 변환을 시도 하면는 int, SQL ServerSQL Server 오류 메시지를 반환 합니다.If you try an incorrect conversion such as trying to convert a character expression that includes letters to an int, SQL ServerSQL Server returns an error message.

출력 데이터 정렬Output Collation

CAST 또는 CONVERT의 출력이 문자열이고 입력도 문자열이면 출력과 입력은 동일한 데이터 정렬 및 데이터 정렬 레이블을 가집니다.When the output of CAST or CONVERT is a character string, and the input is a character string, the output has the same collation and collation label as the input. 입력이 문자열이 아닌 경우에는 출력에서 데이터베이스의 기본 데이터 정렬을 사용하며 강제할 수 있는 기본값의 데이터 정렬 레이블을 사용합니다.If the input is not a character string, the output has the default collation of the database, and a collation label of coercible-default. 자세한 내용은 참조 데이터 정렬 선행 규칙 ( Transact SQL ) .For more information, see Collation Precedence (Transact-SQL).

출력에 다른 데이터 정렬을 할당하려면 CAST 또는 CONVERT 함수의 결과 식에 COLLATE 절을 적용합니다.To assign a different collation to the output, apply the COLLATE clause to the result expression of the CAST or CONVERT function. 예를 들어For example:

SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS

결과 잘라내기 및 반올림Truncating and rounding results

변환 하는 경우 문자 또는 이진 식 (char, nchar, nvarchar, varchar, 이진, 또는 varbinary)을 다른 데이터 형식의 식으로 데이터를 자르기 일부만 표시 또는 결과 길이가 너무 짧아 표시 하면 오류가 반환 됩니다.When you convert character or binary expressions (char, nchar, nvarchar, varchar, binary, or varbinary) to an expression of a different data type, data can be truncated, only partially displayed, or an error is returned because the result is too short to display. 으로 변환은 char, varchar, nchar, nvarchar, 이진, 및 varbinary 다음 표에 있는 변환을 제외 하 고 잘립니다.Conversions to char, varchar, nchar, nvarchar, binary, and varbinary are truncated, except for the conversions shown in the following table.

원래 데이터 형식From data type 변경할 데이터 형식To data type 결과Result
int, smallint, 또는 tinyintint, smallint, or tinyint charchar *
varcharvarchar *
ncharnchar EE
nvarcharnvarchar EE
money, smallmoney, 숫자, 10 진수, float, 또는 실제money, smallmoney, numeric, decimal, float, or real charchar EE
varcharvarchar EE
ncharnchar EE
nvarcharnvarchar EE

*= 결과 길이가 너무 짧아 표시 합니다.* = Result length too short to display. E = 결과 길이가 너무 짧아 표시되지 않으므로 오류가 반환됩니다.E = Error returned because result length is too short to display.

SQL ServerSQL Server왕복 변환만 있는 데이터 형식을 원래 데이터 형식에서 변환 변환한 후 다시 변환 생성 버전 간에 같은 값을 보장 합니다. guarantees that only roundtrip conversions, conversions that convert a data type from its original data type and back again, yield the same values from version to version. 다음 예에서는 이러한 왕복 변환을 보여 줍니다.The following example shows such a roundtrip conversion:

DECLARE @myval decimal (5, 2);  
SET @myval = 193.57;  
SELECT CAST(CAST(@myval AS varbinary(20)) AS decimal(10,5));  
-- Or, using CONVERT  
SELECT CONVERT(decimal(10,5), CONVERT(varbinary(20), @myval));  

참고

생성 하려고 하지 마십시오 이진 값을 숫자 데이터 형식 범주의 데이터 형식으로 변환 합니다.Do not try to construct binary values and then convert them to a data type of the numeric data type category. SQL ServerSQL Server결과 되지는지 않습니다는 10 진수 또는 숫자 데이터 형식 변환에 이진 것의 버전 간에 동일한 SQL ServerSQL Server합니다. does not guarantee that the result of a decimal or numeric data type conversion to binary will be the same between versions of SQL ServerSQL Server.

다음 예에서는 길이가 짧아 표시할 수 없는 결과 식을 보여 줍니다.The following example shows a resulting expression that is too small to display.

USE AdventureWorks2012;  
GO  
SELECT p.FirstName, p.LastName, SUBSTRING(p.Title, 1, 25) AS Title,
    CAST(e.SickLeaveHours AS char(1)) AS [Sick Leave]  
FROM HumanResources.Employee e JOIN Person.Person p 
    ON e.BusinessEntityID = p.BusinessEntityID  
WHERE NOT e.BusinessEntityID >5;  

결과 집합은 다음과 같습니다.Here is the result set.

FirstName   LastName      Title   Sick Leave
---------   ------------- ------- --------`
Ken         Sanchez       NULL   *
Terri       Duffy         NULL   *
Roberto     Tamburello    NULL   *
Rob         Walters       NULL   *
Gail        Erickson      Ms.    *
(5 row(s) affected)  

소수 자릿수가 다른 데이터 형식을 변환할 경우 결과 값이 잘리거나 반올림될 수 있습니다.When you convert data types that differ in decimal places, sometimes the result value is truncated and at other times it is rounded. 다음 표에서는 이러한 동작을 보여 줍니다.The following table shows the behavior.

보낸 사람From 수행할 작업To 동작Behavior
numericnumeric numericnumeric 반올림Round
numericnumeric intint 잘라내기Truncate
numericnumeric moneymoney 반올림Round
moneymoney intint 반올림Round
moneymoney numericnumeric 반올림Round
floatfloat intint 잘라내기Truncate
floatfloat numericnumeric 반올림Round

변환 float 과학적 표기법을 사용 하는 값 10 진수 또는 숫자 전체 자릿수가 17 자리로의 값으로 제한 됩니다.Conversion of float values that use scientific notation to decimal or numeric is restricted to values of precision 17 digits only. 17자리를 넘는 값은 0으로 반올림됩니다.Any value with precision higher than 17 rounds to zero.
floatfloat datetimedatetime 반올림Round
datetimedatetime intint 반올림Round

예를 들어 10.6496 및-10.6496 값 잘린 되었거나 변환 하는 동안 반올림 int 또는 숫자 유형:For example, the values 10.6496 and -10.6496 may be truncated or rounded during conversion to int or numeric types:

SELECT  CAST(10.6496 AS int) as trunc1,
         CAST(-10.6496 AS int) as trunc2,
         CAST(10.6496 AS numeric) as round1,
         CAST(-10.6496 AS numeric) as round2;

쿼리의 결과 다음과 같습니다.Results of the query are shown in the following table:

trunc1trunc1 trunc2trunc2 round1round1 round2round2
1010 -10-10 1111 -11-11

대상 데이터 형식의 소수 자릿수가 원본 데이터 형식의 소수 자릿수보다 적은 데이터 형식을 변환할 경우 값이 반올림됩니다.When you convert data types in which the target data type has fewer decimal places than the source data type, the value is rounded. 예를 들어 다음 변환의 결과는 $10.3497입니다.For example, the result of the following conversion is $10.3497:

SELECT CAST(10.3496847 AS money);

SQL ServerSQL Server숫자가 아닌 경우 오류 메시지가 반환 char, nchar, varchar, 또는 nvarchar 데이터 변환할 int , float, 숫자, 또는 10 진수합니다. returns an error message when nonnumeric char, nchar, varchar, or nvarchar data is converted to int, float, numeric, or decimal. SQL ServerSQL Server빈 문자열이 될 경우 오류도 반환 ("")으로 변환 숫자 또는 10 진수합니다. also returns an error when an empty string (" ") is converted to numeric or decimal.

일부 datetime 변환은 비결 정적 됩니다.Certain datetime conversions are nondeterministic

다음 표에서는 문자열에서 datetime으로의 변환이 비결정적인 스타일을 나열합니다.The following table lists the styles for which the string-to-datetime conversion is nondeterministic.

100 아래의 모든 스타일1All styles below 1001 106106
107107 109109
113113 130130

1 스타일 20 및 21 제외1 With the exception of styles 20 and 21

보조 문자 (서로게이트 쌍)Supplementary characters (surrogate pairs)

부터는 SQL Server 2012SQL Server 2012SC (보조 문자) 데이터 정렬 캐스트 연산에서 사용 하는 경우, nchar 또는 nvarcharnchar 또는 nvarchar 길이가 더 짧은 형식의 서로게이트 쌍 안에서 자르지 않고; 보충 문자 앞에서 자릅니다.Beginning in SQL Server 2012SQL Server 2012, if you use supplementary character (SC) collations, a CAST operation from nchar or nvarchar to an nchar or nvarchar type of smaller length will not truncate inside a surrogate pair; it truncates before the supplementary character. 예를 들어 다음 코드 조각에서는 @x만 보유한 'ab'를 남깁니다.For example, the following code fragment leaves @x holding just 'ab'. 공간이 부족하여 보조 문자를 포함할 수 없습니다.There is not enough space to hold the supplementary character.

DECLARE @x NVARCHAR(10) = 'ab' + NCHAR(0x10000);  
SELECT CAST (@x AS NVARCHAR(3));  

SC 데이터 정렬을 사용할 경우 CONVERT의 동작은 CAST의 동작과 유사합니다.When using SC collations the behavior of CONVERT, is analogous to that of CAST.

호환성 지원Compatibility support

이전 버전의 SQL ServerSQL Server, CAST 및 CONVERT 작업에 대 한 기본 스타일 시간datetime2 데이터 형식 유형 중 하나는 계산된 열 식에 사용 되는 경우를 제외 하 고는 121입니다.In earlier versions of SQL ServerSQL Server, the default style for CAST and CONVERT operations on time and datetime2 data types is 121 except when either type is used in a computed column expression. 계산 열의 경우 기본 스타일은 0입니다.For computed columns, the default style is 0. 이 동작은 자동 매개 변수화와 관련된 쿼리에서 이러한 연산이 만들어지고 사용될 때 또는 제약 조건 정의에 사용될 때 계산 열에 영향을 줍니다.This behavior impacts computed columns when they are created, used in queries involving auto-parameterization, or used in constraint definitions.

호환성 수준 110 이상에서 기본 스타일에 대 한 CAST 및 CONVERT 연산에 시간datetime2 데이터 형식을 항상 121입니다.Under compatibility level 110 and higher, the default style for CAST and CONVERT operations on time and datetime2 data types is always 121. 쿼리에 이전 동작이 적용되는 경우 110보다 낮은 호환성 수준을 사용하거나, 해당 쿼리에서 스타일 0을 명시적으로 지정해야 합니다.If your query relies on the old behavior, use a compatibility level less than 110, or explicitly specify the 0 style in the affected query.

데이터베이스를 호환성 수준 110 이상으로 업그레이드할 경우 디스크에 저장된 사용자 데이터는 변경되지 않습니다.Upgrading the database to compatibility level 110 and higher will not change user data that has been stored to disk. 수동으로 이 데이터를 적절하게 수정해야 합니다.You must manually correct this data as appropriate. 예를 들어 SELECT INTO를 사용하여 위에서 설명한 계산 열 식이 포함된 원본에서 테이블을 만든 경우 계산 열 정의 자체가 아니라 스타일 0을 사용하는 데이터가 저장됩니다.For example, if you used SELECT INTO to create a table from a source that contained a computed column expression described above, the data (using style 0) would be stored rather than the computed column definition itself. 스타일 121과 일치하도록 이 데이터를 수동으로 업데이트해야 합니다.You would need to manually update this data to match style 121.

Examples

1.A. CAST 및 CONVERT 모두 사용Using both CAST and CONVERT

각 예에서는 제품 가격 첫 자리에 3이 있는 제품의 이름을 검색하고 ListPriceint로 변환합니다.Each example retrieves the name of the product for those products that have a 3 in the first digit of their list price and converts their ListPrice to int.

-- Use CAST  
USE AdventureWorks2012;  
GO  
SELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPrice  
FROM Production.Product  
WHERE CAST(ListPrice AS int) LIKE '3%';  
GO  

-- Use CONVERT.  
USE AdventureWorks2012;  
GO  
SELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPrice  
FROM Production.Product  
WHERE CONVERT(int, ListPrice) LIKE '3%';  
GO  

2.B. CAST에 산술 연산자 사용Using CAST with arithmetic operators

다음 예에서는 총 연간 매출(Computed)을 커미션 비율(SalesYTD)로 나누어 한 열을 계산(CommissionPCT)합니다.The following example calculates a single column computation (Computed) by dividing the total year-to-date sales (SalesYTD) by the commission percentage (CommissionPCT). 이 결과는 가장 근사한 정수로 반올림된 후 int 데이터 형식으로 변환됩니다.This result is converted to an int data type after being rounded to the nearest whole number.

USE AdventureWorks2012;  
GO  
SELECT CAST(ROUND(SalesYTD/CommissionPCT, 0) AS int) AS Computed  
FROM Sales.SalesPerson   
WHERE CommissionPCT != 0;  
GO  

결과 집합은 다음과 같습니다.Here is the result set.

Computed
------
379753754
346698349
257144242
176493899
281101272
0  
301872549
212623750
298948202
250784119
239246890
101664220
124511336
97688107
(14 row(s) affected)  

3.C. CAST를 사용하여 연결Using CAST to concatenate

다음 예에서는 캐스팅을 사용 하 여 문자가 아닌 식을 연결 합니다.The following example concatenates noncharacter expressions by using CAST. AdventureWorksDW를 사용합니다.Uses AdventureWorksDW.

SELECT 'The list price is ' + CAST(ListPrice AS varchar(12)) AS ListPrice  
FROM dbo.DimProduct  
WHERE ListPrice BETWEEN 350.00 AND 400.00;  

결과 집합은 다음과 같습니다.Here is the result set.

ListPrice
------------------------
The list price is 357.06
The list price is 364.09
The list price is 364.09
The list price is 364.09
The list price is 364.09  

4.D. CAST를 사용하여 읽기 쉬운 텍스트 만들기Using CAST to produce more readable text

다음 예제에서는 SELECT 목록에서 변환 하려면 CAST가 사용 된 Name 열을 한 char (10) 열.The following example uses CAST in the SELECT list to convert the Name column to a char(10) column. AdventureWorksDW를 사용합니다.Uses AdventureWorksDW.

SELECT DISTINCT CAST(EnglishProductName AS char(10)) AS Name, ListPrice  
FROM dbo.DimProduct  
WHERE EnglishProductName LIKE 'Long-Sleeve Logo Jersey, M';  

결과 집합은 다음과 같습니다.Here is the result set.

Name        UnitPrice
----------  ---------
Long-Sleev  31.2437
Long-Sleev  32.4935
Long-Sleev  49.99  

5.E. CAST에 LIKE 절 사용Using CAST with the LIKE clause

다음 예에서는 money 절과 함께 사용할 수 있도록 SalesYTD 열인 intchar(20)로 변환한 다음 LIKE 열로 변환합니다.The following example converts the money column SalesYTD to an int and then to a char(20) column so that it can be used with the LIKE clause.

USE AdventureWorks2012;  
GO  
SELECT p.FirstName, p.LastName, s.SalesYTD, s.BusinessEntityID  
FROM Person.Person AS p   
JOIN Sales.SalesPerson AS s   
    ON p.BusinessEntityID = s.BusinessEntityID  
WHERE CAST(CAST(s.SalesYTD AS int) AS char(20)) LIKE '2%';  
GO  

결과 집합은 다음과 같습니다.Here is the result set.

FirstName        LastName            SalesYTD         SalesPersonID
---------------- ------------------- ---------------- -------------
Tsvi             Reiter              2811012.7151      279
Syed             Abbas               219088.8836       288
Rachel           Valdez              2241204.0424      289
(3 row(s) affected)  

6.F. 형식화된 XML과 함께 CONVERT 또는 CAST 사용Using CONVERT or CAST with typed XML

사용 하 여 형식화 된 XML로 변환 하기 위해 CONVERT를 사용 하 여 보여 주는 몇 가지 예는 다음과 같은 XML 데이터 형식 및 열 ( SQL Server ) .The following are several examples that show using CONVERT to convert to typed XML by using the XML Data Type and Columns (SQL Server).

다음 예에서는 공백, 텍스트 및 태그가 있는 문자열을 형식화된 XML로 변환하고 불필요한 공백(노드 사이의 경계 공백)을 모두 제거합니다.This example converts a string with white space, text and markup into typed XML and removes all insignificant white space (boundary white space between nodes):

CONVERT(XML, '<root><child/></root>')  

다음 예에서는 공백, 텍스트 및 태그가 있는 비슷한 문자열을 형식화된 XML로 변환하고 불필요한 공백(노드 사이의 경계 공백)을 유지합니다.This example converts a similar string with white space, text and markup into typed XML and preserves insignificant white space (boundary white space between nodes):

CONVERT(XML, '<root>          <child/>         </root>', 1)  

다음 예에서는 공백, 텍스트 및 태그가 있는 문자열을 형식화된 XML로 캐스팅합니다.This example casts a string with white space, text, and markup into typed XML:

CAST('<Name><FName>Carol</FName><LName>Elliot</LName></Name>'  AS XML)  

더 많은 예제를 참조 하십시오. XML 데이터 인스턴스 만들기합니다.For more examples, see Create Instances of XML Data.

7.G. datetime 데이터와 함께 CAST 및 CONVERT 사용Using CAST and CONVERT with datetime data

다음 예에서는 현재 날짜와 시간을 표시합니다. 즉, CAST를 사용하여 현재 날짜와 시간을 문자 데이터 형식으로 변경한 다음 CONVERT를 사용하여 ISO 8901 형식으로 날짜와 시간을 표시합니다.The following example displays the current date and time, uses CAST to change the current date and time to a character data type, and then uses CONVERT display the date and time in the ISO 8901 format.

SELECT   
   GETDATE() AS UnconvertedDateTime,  
   CAST(GETDATE() AS nvarchar(30)) AS UsingCast,  
   CONVERT(nvarchar(30), GETDATE(), 126) AS UsingConvertTo_ISO8601  ;  
GO  

결과 집합은 다음과 같습니다.Here is the result set.

UnconvertedDateTime     UsingCast              UsingConvertTo_ISO8601
----------------------- ---------------------- ------------------------------
2006-04-18 09:58:04.570 Apr 18 2006  9:58AM    2006-04-18T09:58:04.570
(1 row(s) affected)  

다음 예에서는 이전 예와 반대로 수행합니다.The following example is approximately the opposite of the previous example. 다음 예에서는 날짜와 시간을 문자 데이터로 표시합니다. 즉, CAST를 사용하여 문자 데이터를 datetime 데이터 형식으로 변경한 다음 CONVERT를 사용하여 문자 데이터를 datetime 데이터 형식으로 변경합니다.The example displays a date and time as character data, uses CAST to change the character data to the datetime data type, and then uses CONVERT to change the character data to the datetime data type.

SELECT   
   '2006-04-25T15:50:59.997' AS UnconvertedText,  
   CAST('2006-04-25T15:50:59.997' AS datetime) AS UsingCast,  
   CONVERT(datetime, '2006-04-25T15:50:59.997', 126) AS UsingConvertFrom_ISO8601 ;  
GO  

결과 집합은 다음과 같습니다.Here is the result set.

UnconvertedText         UsingCast               UsingConvertFrom_ISO8601
----------------------- ----------------------- ------------------------
2006-04-25T15:50:59.997 2006-04-25 15:50:59.997 2006-04-25 15:50:59.997
(1 row(s) affected)  

8.H. CONVERT에 이진 및 문자 데이터 사용Using CONVERT with binary and character data

다음 예에서는 다양한 스타일을 사용하여 이진 및 문자 데이터를 변환한 결과를 보여 줍니다.The following examples show the results of converting binary and character data by using different styles.

--Convert the binary value 0x4E616d65 to a character value.  
SELECT CONVERT(char(8), 0x4E616d65, 0) AS [Style 0, binary to character];  

결과 집합은 다음과 같습니다.Here is the result set.

Style 0, binary to character
----------------------------
Name  
(1 row(s) affected)  

다음 예에서는 스타일 1 잘릴 결과 강제로 수행할 수는 방법을 보여 줍니다.The following example shows how Style 1 can force the result to be truncated. 잘림을 원인은 공백으로 0 x 결과에서입니다.The truncation is caused by including the characters 0x in the result.

SELECT CONVERT(char(8), 0x4E616d65, 1) AS [Style 1, binary to character];  

결과 집합은 다음과 같습니다.Here is the result set.

Style 1, binary to character
------------------------------
0x4E616D
(1 row(s) affected)  

다음 예에서는 스타일 2 때문에 결과 truncate 하지 않는 문자 0 x 결과에 포함 되지 않습니다.The following example shows that Style 2 does not truncate the result because the characters 0x are not included in the result.

SELECT CONVERT(char(8), 0x4E616d65, 2) AS [Style 2, binary to character];  

결과 집합은 다음과 같습니다.Here is the result set.

Style 2, binary to character
------------------------------
4E616D65
(1 row(s) affected)  

'Name' 문자 값을 이진 값으로 변환 합니다.Convert the character value 'Name' to a binary value.

SELECT CONVERT(binary(8), 'Name', 0) AS [Style 0, character to binary];  

결과 집합은 다음과 같습니다.Here is the result set.

Style 0, character to binary
----------------------------
0x4E616D6500000000
(1 row(s) affected)  
SELECT CONVERT(binary(4), '0x4E616D65', 1) AS [Style 1, character to binary];  

결과 집합은 다음과 같습니다.Here is the result set.

Style 1, character to binary
---------------------------- 
0x4E616D65
(1 row(s) affected)  
SELECT CONVERT(binary(4), '4E616D65', 2) AS [Style 2, character to binary];  

결과 집합은 다음과 같습니다.Here is the result set.

Style 2, character to binary  
----------------------------------  
0x4E616D65
(1 row(s) affected)  

9.I. 날짜 및 시간 데이터 형식 변환Converting date and time data types

다음 예제는 date, time 및 datetime 데이터 형식의 변환을 보여 줍니다.The following example demonstrates the conversion of date, time, and datetime data types.

DECLARE @d1 date, @t1 time, @dt1 datetime;  
SET @d1 = GETDATE();  
SET @t1 = GETDATE();  
SET @dt1 = GETDATE();  
SET @d1 = GETDATE();  
-- When converting date to datetime the minutes portion becomes zero.  
SELECT @d1 AS [date], CAST (@d1 AS datetime) AS [date as datetime];  
-- When converting time to datetime the date portion becomes zero   
-- which converts to January 1, 1900.  
SELECT @t1 AS [time], CAST (@t1 AS datetime) AS [time as datetime];  
-- When converting datetime to date or time non-applicable portion is dropped.  
SELECT @dt1 AS [datetime], CAST (@dt1 AS date) AS [datetime as date], 
   CAST (@dt1 AS time) AS [datetime as time];  

예: Azure SQL 데이터 웨어하우스Azure SQL Data Warehouse병렬 데이터 웨어하우스Parallel Data WarehouseExamples: Azure SQL 데이터 웨어하우스Azure SQL Data Warehouse and 병렬 데이터 웨어하우스Parallel Data Warehouse

10.J. CAST 및 CONVERT를 사용 하 여Using CAST and CONVERT

이러한 제품에 대해 제품의 이름을 검색 하는이 예제는 3 정가 변환의 첫 자리에 해당 ListPriceint합니다. AdventureWorksDW를 사용합니다.This example retrieves the name of the product for those products that have a 3 in the first digit of their list price and converts their ListPrice to int. Uses AdventureWorksDW.

SELECT EnglishProductName AS ProductName, ListPrice  
FROM dbo.DimProduct  
WHERE CAST(ListPrice AS int) LIKE '3%';  

이 예제에는 CAST 대신 CONVERT를 사용 하 여 동일한 쿼리를 보여 줍니다.This example shows the same query, using CONVERT instead of CAST. AdventureWorksDW를 사용합니다.Uses AdventureWorksDW.

SELECT EnglishProductName AS ProductName, ListPrice  
FROM dbo.DimProduct  
WHERE CONVERT(int, ListPrice) LIKE '3%';  

11.K. CAST에 산술 연산자 사용Using CAST with arithmetic operators

다음 예제에서는 제품 단가 분할 하 여 단일 열 계산을 계산 (UnitPrice)는 할인 백분율 (UnitPriceDiscountPct).The following example calculates a single column computation by dividing the product unit price (UnitPrice) by the discount percentage (UnitPriceDiscountPct). 이 결과는 가장 근사한 정수로 반올림된 후 int 데이터 형식으로 변환됩니다.This result is converted to an int data type after being rounded to the nearest whole number. AdventureWorksDW를 사용합니다.Uses AdventureWorksDW.

SELECT ProductKey, UnitPrice,UnitPriceDiscountPct,  
       CAST(ROUND (UnitPrice*UnitPriceDiscountPct,0) AS int) AS DiscountPrice  
FROM dbo.FactResellerSales  
WHERE SalesOrderNumber = 'SO47355'   
      AND UnitPriceDiscountPct > .02;  

결과 집합은 다음과 같습니다.Here is the result set.

ProductKey  UnitPrice  UnitPriceDiscountPct  DiscountPrice
----------  ---------  --------------------  -------------
323         430.6445   0.05                  22
213         18.5043    0.05                  1
456         37.4950    0.10                  4
456         37.4950    0.10                  4
216         18.5043    0.05                  1  

12.L. CAST에 LIKE 절 사용Using CAST with the LIKE clause

다음 예제는 moneyListPriceint 형식 다음는 char(20) LIKE 절과 함께 사용할 수 있도록 입력 합니다.The following example converts the money column ListPrice to an int type and then to a char(20) type so that it can be used with the LIKE clause. AdventureWorksDW를 사용합니다.Uses AdventureWorksDW.

SELECT EnglishProductName AS Name, ListPrice  
FROM dbo.DimProduct  
WHERE CAST(CAST(ListPrice AS int) AS char(20)) LIKE '2%';  

13.M. datetime 데이터와 함께 CAST 및 CONVERT 사용Using CAST and CONVERT with datetime data

다음 예제에서는 표시에서 현재 날짜 및 시간을 사용 하 여 문자 데이터 형식으로 현재 날짜 및 시간을 변경 하려면 CAST 및 CONVERT를 사용 하 여 ISO 8601 형식에 날짜와 시간을 표시 합니다.The following example displays the current date and time, uses CAST to change the current date and time to a character data type, and then uses CONVERT display the date and time in the ISO 8601 format. AdventureWorksDW를 사용합니다.Uses AdventureWorksDW.

SELECT TOP(1)  
   SYSDATETIME() AS UnconvertedDateTime,  
   CAST(SYSDATETIME() AS nvarchar(30)) AS UsingCast,  
   CONVERT(nvarchar(30), SYSDATETIME(), 126) AS UsingConvertTo_ISO8601  
FROM dbo.DimCustomer;  

결과 집합은 다음과 같습니다.Here is the result set.

UnconvertedDateTime     UsingCast                     UsingConvertTo_ISO8601  
---------------------   ---------------------------   ---------------------------  
07/20/2010 1:44:31 PM   2010-07-20 13:44:31.5879025   2010-07-20T13:44:31.5879025  

다음 예에서는 이전 예와 반대로 수행합니다.The following example is approximately the opposite of the previous example. 이 예제에서는 문자 데이터로 표시 되는 날짜와 시간을 표시, 캐스트를 사용 하 여 문자 데이터를 변경는 datetime 데이터 형식 및 사용 하 여 문자 데이터를 변경 하려면 CONVERT는 datetime 데이터 형식입니다.The example displays a date and time as character data, uses CAST to change the character data to the datetime data type, and then uses CONVERT to change the character data to the datetime data type. AdventureWorksDW를 사용합니다.Uses AdventureWorksDW.

SELECT TOP(1)   
   '2010-07-25T13:50:38.544' AS UnconvertedText,  
CAST('2010-07-25T13:50:38.544' AS datetime) AS UsingCast,  
   CONVERT(datetime, '2010-07-25T13:50:38.544', 126) AS UsingConvertFrom_ISO8601  
FROM dbo.DimCustomer;  

결과 집합은 다음과 같습니다.Here is the result set.

UnconvertedText         UsingCast               UsingConvertFrom_ISO8601
----------------------- ----------------------- ------------------------
2010-07-25T13:50:38.544 07/25/2010 1:50:38 PM   07/25/2010 1:50:38 PM  

참고 항목See also

데이터 형식 변환 ( 데이터베이스 엔진 )Data Type Conversion (Database Engine)
SELECT(Transact-SQL)SELECT (Transact-SQL)
시스템 함수 ( Transact SQL )System Functions (Transact-SQL)
국가별 Transact-SQL 문 작성Write International Transact-SQL Statements