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

これらの関数は、あるデータ型の式を別のデータ型に変換します。These functions convert an expression of one data type to another.

例: 入力データ型を変更します。Example: Change the input datatype

CASTCast

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

[変換]Convert


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 ssNoversionint Decimaldecimal
9.59.5 99 9.50009.5000

後で示す をご覧ください。See the examples later in this topic.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

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

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

引数Arguments

式 (expression)expression
任意の有効なAny valid expression.

data_typedata_type
対象のデータ型です。The target data type. xmlbigintsql_variant が含まれます。This includes xml, bigint, and sql_variant. 別名データ型は使用できません。Alias data types cannot be used.

lengthlength
対象のデータ型の長さを指定する整数です (省略可能)。An optional integer that specifies the length of the target data type. 既定値は、30 です。The default value is 30.

stylestyle
CONVERT 関数で expression を変換する方法を指定する整数式です。An integer expression that specifies how the CONVERT function will translate expression. スタイル値が NULL の場合は、NULL が返されます。For a style value of NULL, NULL is returned. data_type は範囲を決定します。data_type determines the range.

戻り値の型Return types

data_type に変換された expression を返します。Returns expression, translated to data_type.

日付および時刻のスタイルDate and Time Styles

date または time データ型の expression の場合、style には次の表に示すいずれかの値を指定できます。For a date or time data type expression, style can have one of the values shown in the following table. その他の値は 0 として処理されます。Other values are processed as 0. SQL Server 2012 (11.x)SQL Server 2012 (11.x) 以降では、date 型と time 型を datetimeoffset に変換するときにサポートされるスタイルは、0 または 1 のみです。Beginning with SQL Server 2012 (11.x)SQL Server 2012 (11.x), the only styles 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, with the Kuwaiti algorithm.

2 桁の年 (yy) (1)Without century (yy) (1) 4 桁の年 (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)
"10"10 110110 米国USA 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: For a milliseconds (mmm) value of 0, the millisecond decimal fraction value will not display. たとえば、値 "2012-11-07T18:26:20.000" は、"2012-11-07T18:26:20"' と表示されます。For example, the value '2012-11-07T18:26:20.000 displays as '2012-11-07T18:26:20'.
- 127(6、7)127(6, 7) ISO 8601 (タイム ゾーン Z)ISO8601 with time zone Z. yyyy-mm-ddThh:mi:ss.mmmZ (スペースなし)yyyy-mm-ddThh:mi:ss.mmmZ (no spaces)

注: ミリ秒 (mmm) の値が 0 の場合、ミリ秒を示す小数部の値は表示されません。Note: For a milliseconds (mmm) value of 0, the millisecond decimal value will not display. たとえば、値 "2012-11-07T18:26:20.000" は、"2012-11-07T18:26:20" と表示されます。For example, the value '2012-11-07T18:26:20.000 will display as '2012-11-07T18:26:20'.
- 130 (1、2)130 (1,2) Hijri (5)Hijri (5) dd mon yyyy hh:mi:ss:mmmAMdd mon yyyy hh:mi:ss:mmmAM

このスタイルでは、mon は月の正式名に関する複数トークンの Hijri (イスラム暦) ユニコード表現を表します。In this style, mon represents a multi-token Hijri unicode representation of the full month name. この値は、SSMS の既定の米国用インストールでは正しく表示されません。This value does not render correctly on a default US installation of SSMS.
- 131 (2)131 (2) Hijri (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) (2 桁の年) スタイルと、(yyyy) (4 桁の年) スタイルのサブセットが対象となります。Includes all (yy) (without century) styles and a subset of (yyyy) (with century) styles.

2 既定値 (0 または 1009 または 10913 または 11320 または 120、および 21 または 121) は常に 4 桁の年 (yyyy) を返します。2 The default values (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, see the previous table for the output format.

5 Hijri とはいくつかのバリエーションがあるカレンダー システムです。5 Hijri is a calendar system with several variations. SQL ServerSQL Server ではクウェート アルゴリズムが使用されます。 uses the Kuwaiti algorithm.

重要

SQL ServerSQL Server の既定では、2 桁の年は、終了年 2049 年を基準に解釈されます。By default, SQL ServerSQL Server interprets two-digit years based on a cutoff year of 2049. つまり、SQL Server は 2 桁の年 49 を 2049 年と解釈し、2 桁の年 50 を 1950 年と解釈します。That means that SQL Server interprets the two-digit year 49 as 2049 and the two-digit year 50 as 1950. クライアント アプリケーションの中には、Automation オブジェクトに基づくものなど、2030 年を終了年とするものも多くあります。Many client applications, including those based on Automation objects, use a cutoff year of 2030. SQL ServerSQL Server には、 SQL ServerSQL Server によって使用される基準年を変更するための 2 桁年基準構成オプションが用意されています。 provides the two digit year cutoff configuration option to change the cutoff year used by SQL ServerSQL Server. これにより、日付の一貫性のある処理を行うことができます。This allows for the consistent treatment of dates. 年は 4 桁で指定することを推奨します。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 casting character data representing only date or only time components 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 値へのマップが容易になります。7Use the optional time zone indicator Z 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 indicates time zone UTC-0. + または - 方向の HH:MM オフセットは、他のタイム ゾーンを示します。The HH:MM offset, in the + or - direction, indicates other time zones. 例: 2006-12-12T23:45:12-08:00」を参照してください。For example: 2006-12-12T23:45:12-08:00.

smalldatetime を文字データに変換する場合、秒またはミリ秒を含むスタイルではそれらの位置に 0 が表示されます。When converting smalldatetime to character data, the styles that include seconds or milliseconds show zeros in these positions. datetime または smalldatetime の値から変換するときは、適切な char または varchar データ型の長さを使用して、日付の不要な部分を切り捨てます。When converting from datetime or smalldatetime values, use an appropriate char or varchar data type length to truncate unwanted date parts.

時刻を含むスタイルを使って文字データから datetimeoffset に変換すると、タイム ゾーン オフセットが結果に追加されます。When converting character data to datetimeoffset, using a style that includes a time, a time zone offset is appended to the result.

float 型スタイルと real 型スタイルfloat and real styles

expressionfloat 型または real 型の場合、style は次の表に示すいずれかの値になります。For a float or real expression, style can have one of the values shown in the following table. その他の値は 0 として処理されます。Other values are processed as 0.

ReplTest1Value [出力]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. このスタイルでは、すべての浮動小数点数または実数が異なる文字列に変換されることが保証されます。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 2016 (13.x)SQL Server 2016 (13.x) 以降。Applies to: Azure SQL データベースAzure SQL Database, and starting in SQL Server 2016 (13.x)SQL Server 2016 (13.x).
126、128、129126, 128, 129 レガシのために含まれていますが、将来のリリースではこれらの値は非推奨になる可能性があります。Included for legacy reasons; a future release could deprecate these values.

money 型スタイルと smallmoney 型スタイルmoney and smallmoney styles

expressionmoney 型または smallmoney 型の場合、style は次の表に示すいずれかの値になります。For a money or smallmoney expression, style can have one of the values shown in the following table. その他の値は 0 として処理されます。Other values are processed as 0.

ReplTest1Value [出力]Output
0 (既定値)0 (default) 小数点位置から左へ 3 桁ごとの位置にはコンマを挿入しません。また、小数点右側には 2 桁をとります。No commas every three digits to the left of the decimal point, and two digits to the right of the decimal point

例: 4235.98Example: 4235.98.
11 小数点位置から左へ 3 桁ごとの位置にはコンマを挿入します。また、小数点右側には 2 桁をとります。Commas every three digits to the left of the decimal point, and two digits to the right of the decimal point

例: 3,510.92Example: 3,510.92.
22 小数点位置から左へ 3 桁ごとの位置にはコンマを挿入しません。また、小数点右側には 4 桁をとります。No commas every three digits to the left of the decimal point, and four digits to the right of the decimal point

例: 4235.9819Example: 4235.9819.
126126 char(n) または varchar(n) に変換する場合はスタイル 2 に相当します。Equivalent to style 2, when converting to char(n) or varchar(n)

xml スタイルxml styles

expressionxml 型の場合、style は次の表に示すいずれかの値になります。For an xml expression, style can have one of the values shown in the following table. その他の値は 0 として処理されます。Other values are processed as 0.

ReplTest1Value [出力]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 converting 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="preserve" の動作と一致するように、既定の xml:space の処理を設定します。This style setting sets the default xml:space handling to match the behavior of xml:space="preserve".
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 宣言を評価して、standalone 属性に yes または no の値が設定されているかどうかも確認しません。Also, it does not evaluate the XML declaration to see whether the standalone attribute has a yes or no value. 代わりに、XML インスタンスをスタンドアロン ドキュメントとして解析します。Instead, it parses the XML instance as a stand-alone document.
33 余分な空白を保持し、限定的な内部 DTD サブセット処理を有効にします。Preserve insignificant white space, and enable limited internal DTD subset processing.

バイナリ スタイルBinary styles

expressionbinary(n)char(n)varbinary(n)、または varchar(n) の場合、style は次の表に示すいずれかの値になります。For a binary(n), char(n), varbinary(n), or varchar(n) expression, style can have one of the values shown in the following table. 表に記載されていないスタイル値の場合は、エラーが返されます。Style values not listed in the table will return an error.

ReplTest1Value [出力]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 が結果の左側に追加されます。For a binary data_type, the characters 0x are added to the left of the result.
121, 2 バイナリの data_type の場合は、式は文字式であることが必要です。For a binary data_type, the expression must be a character expression. 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 have 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). style が 1 に設定されている場合、最初の 2 文字は 0x である必要があります。If the style is set to 1, the must have 0x as the first two characters. 式に奇数桁の文字が含まれているか、いずれかの文字が使用できない場合は、エラーが発生します。If the expression contains an odd number of characters, or if any of the characters is invalid, an error is raised.

変換された式の長さが data_type の長さを超える場合、結果の右側が切り捨てられます。If the length of the converted expression exceeds the length of the data_type, the result is right truncated.

固定長の data_type が変換された結果より長い場合は、結果の右側に 0 が追加されます。Fixed length data_types larger than the converted result have zeros added to the right of the result.

data_type が文字型の場合は、バイナリ式である必要があります。A data_type of type character requires a binary expression. 各バイナリ文字は、16 進値を表す 2 桁の英数文字に変換されます。Each binary character is converted into two hexadecimal characters. 変換された式の長さが data_type の長さを超える場合、右側が切り捨てられます。If the length of the converted expression exceeds the length of the data_type, it will be right truncated.

data_type が固定サイズの文字型で、変換された結果の長さが data_type の長さよりも短い場合、変換された式の右側に空白が追加され、偶数桁の 16 進数が維持されます。For a fixed size character type data_type, if 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.

style が 1 の場合、変換された結果の左側に文字 0x が追加されます。The characters 0x will be added to the left of the converted result for style 1.

暗黙的な変換Implicit conversions

暗黙的な変換では、CAST 関数または CONVERT 関数を指定する必要はありません。Implicit conversions do not require specification of either the CAST function or the CONVERT function. 明示的な変換では、CAST 関数または CONVERT 関数を指定する必要があります。Explicit conversions require specification of the CAST function or the CONVERT function. 次の図は、 SQL ServerSQL Server システムで提供されるデータ型に対して許可されるすべての明示的および暗黙的なデータ型変換を示しています。The following illustration shows all explicit and implicit data type conversions allowed for SQL ServerSQL Server system-supplied data types. bigintsql_variantxml が含まれます。These include bigint, and sql_variant, and xml. 代入時に 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.

ヒント

この表は、Microsoft ダウンロード センターで PDF ファイルとしてダウンロードできます。The Microsoft Download Center has this chart available for download as a PDF file.

データ型変換表Data type conversion table

datetimeoffset と、charncharnvarchar、および varchar の各文字型との間で変換を行う場合、変換後のタイム ゾーン オフセットの部分は、HH と MM の両方が常に 2 桁である必要があります。When you convert between datetimeoffset and the character types char, nchar, nvarchar, and varchar, the converted time zone offset part should always have double digits for both HH and MM. たとえば、-08:00 などです。For example, -08:00.

注意

Unicode データでは常に偶数のバイト数が使用されるので、binary 型または varbinary 型と、Unicode がサポートするデータ型との間でデータを変換する場合は注意してください。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. たとえば、次のような変換を行うと、16 進数の 41 は返されません。For example, the following conversion does not return a hexadecimal value of 41. 16 進数の値 4100 が返されます。SELECT CAST(CAST(0x41 AS nvarchar) AS varbinary)It returns a hexadecimal value of 4100: SELECT CAST(CAST(0x41 AS nvarchar) AS varbinary).

大きな値のデータ型Large-value data types

大きな値のデータ型では、それより小さな値のデータ型、つまり nvarcharvarbinary、および varchar 型と同様の明示的および暗黙的な変換動作が行われます。Large-value data types have the same implicit and explicit conversion behavior as their smaller counterparts - specifically, the nvarchar, varbinary, and varchar data types. ただし、次のガイドラインを考慮してください。However, consider the following guidelines:

  • image 型から varbinary(max) 型への変換およびその逆の変換は暗黙的な変換であり、text 型と varchar(max) 型の間、および ntext 型と nvarchar(max) 型の間の変換も暗黙的な変換です。Conversion from image to varbinary(max), and vice-versa, operates as an implicit conversion, as do 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 size of the large value exceeds the specified length of the smaller data type.
  • nvarcharvarbinary、または varchar 型から対応する大きな値のデータ型への変換は、暗黙的に行われます。Conversion from nvarchar, varbinary, or varchar to their corresponding large-value data types happens 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 conversion 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 defined set of rules. これらの規則については、「XML データのシリアル化の定義」を参照してください。For information about these rules, see Define the Serialization of XML Data. 他のデータ型から xml データ型への変換については、「XML データのインスタンスの作成」をご覧ください。For information about conversion from other data types to the xml data type, see Create Instances of XML Data.

text および image データ型text and image data types

text および image データ型では、データ型の自動変換はサポートされていません。The text and image data types do not support automatic data type conversion. text データは文字データに、image データは binary または varbinary 型に明示的に変換できますが、最大の長さは 8,000 バイトに制限されます。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, for example 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 CAST or CONVERT functions output a character string, and they receive a character string input, 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

文字式またはバイナリ式 (binarycharncharnvarcharvarbinary、または varchar) を異なるデータ型の式に変換するとき、変換操作により、出力データが切り捨てられたり、出力データの一部だけ表示されたり、エラーが返されたりする場合があります。When converting character or binary expressions (binary, char, nchar, nvarchar, varbinary, or varchar) to an expression of a different data type, the conversion operation could truncate the output data, only partially display the output data, or return an error. このようなことは、結果が小さすぎて表示できない場合に発生します。These cases will occur if the result is too short to display. binarycharncharnvarcharvarbinary、および varchar 型への変換では、次の表に示す変換を除き、切り捨てが行われます。Conversions to binary, char, nchar, nvarchar, varbinary, or varchar are truncated, except for the conversions shown in the following table.

変換前のデータ型From data type 変換後のデータ型To data type 結果Result
intsmallint、または tinyintint, smallint, or tinyint charchar *
varcharvarchar *
ncharnchar EE
nvarcharnvarchar EE
moneysmallmoneynumericdecimalfloat、または realmoney, 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, in other words 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));  

注意

binary 型の値を作成し、これを数値データ型に変換することは避けてください。Do not construct binary values, and then convert them to a data type of the numeric data type category. SQL ServerSQL Server では、decimal または numeric データ型の binary 型への変換が 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)  

小数点の位置が異なるデータ型を変換すると、SQL Server により、切り捨てられた結果の値が返される場合と、丸められた値が返される場合があります。When you convert data types that differ in decimal places, SQL Server will sometimes return a truncated result value, and at other times it will return a rounded value. 次の表にその動作を示します。This table shows the behavior.

FromFrom 変換先To 動作Behavior
numericnumeric numericnumeric 四捨五入Round
numericnumeric intint 切り捨てTruncate
numericnumeric moneymoney 四捨五入Round
moneymoney intint 四捨五入Round
moneymoney numericnumeric 四捨五入Round
floatfloat intint 切り捨てTruncate
floatfloat numericnumeric 四捨五入Round

変換 float 値を科学的表記法を使用する decimal または 数値 17 桁のみを有効桁数の値に制限されます。Conversion of float values that use scientific notation to decimal or numeric is restricted to values of precision 17 digits only. 有効桁数が 17 より多い値はゼロに丸められます。Any value with precision higher than 17 rounds to zero.
floatfloat datetimedatetime 四捨五入Round
datetimedatetime intint 四捨五入Round

たとえば、値 10.6496 と -10.6496 を int または numeric 型に変換すると、切り捨てや丸め処理が行われる可能性があります。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 converting data types where the target data type has fewer decimal places than the source data type, the value is rounded. たとえば、次の変換では $10.3497 が返されます。For example, this conversion returns $10.3497:

SELECT CAST(10.3496847 AS money);

数値ではない charncharnvarcharvarchar データを、decimalfloatintnumeric に変換すると、 SQL ServerSQL Server はエラー メッセージを返します。 SQL ServerSQL Server returns an error message when converting nonnumeric char, nchar, nvarchar, or varchar data to decimal, float, int, numeric. また、 SQL ServerSQL Server では、空の文字列 (" ") を numeric または decimal に変換してもエラーが返されます。 SQL ServerSQL Server 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 2012 (11.x)SQL Server 2012 (11.x) 以降、補助文字 (SC) の照合順序を使用した場合は、nchar または nvarchar 型から nchar または nvarchar 型への CAST 操作を実行すると、サロゲート ペア内では切り捨てられません。Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x), when using 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. 代わりに、補助文字の前で切り捨てが行われます。Instead, the operation 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 では、time および datetime2 データ型に対する CAST および CONVERT 操作の既定のスタイルは、いずれかの型が計算列の式で使用されている場合を除き、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 以上では、time および datetime2 データ型に対する CAST および CONVERT 操作は、既定のスタイルとして常に 121 になります。Under compatibility level 110 and higher, the CAST and CONVERT operations on the time and datetime2 datatypes always have 121 as the default style. クエリが古い動作に依存する場合は、110 より小さい互換性レベルを使用するか、または影響を受けるクエリで 0 スタイルを明示的に指定してください。If a 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 containing a computed column expression described above, the data (using style 0) would be stored rather than the computed column definition itself. このようなデータは、手動で更新してスタイル 121 に一致させる必要があります。You must manually update this data to match style 121.

使用例Examples

A.A. CAST と CONVERT の両方を使用するUsing both CAST and CONVERT

次の例では、表示価格の最初の桁が 3 である製品について製品名を取得し、その ListPriceint 型に変換します。These examples retrieve the name of the product, for those products that have a 3 as the first digit of list price, and converts their ListPrice values 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  

B.B. CAST を算術演算子と共に使用するUsing CAST with arithmetic operators

この例では、今年のこれまでの売り上げ合計 (Computed) を手数料のパーセンテージ (SalesYTD) で割り、単一列の計算 (CommissionPCT) を行います。This example calculates a single column computation (Computed) by dividing the total year-to-date sales (SalesYTD) by the commission percentage (CommissionPCT). この値は、最も近い整数に丸められた後、int データ型に CAST されます。This value is rounded to the nearest whole number and is then CAST to an int data type.

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)  

C.C. CAST を使用して連結するUsing CAST to concatenate

この例では、CAST を使用して文字型ではない式を連結します。This example concatenates noncharacter expressions by using CAST. AdventureWorksDW データベースを使用します。It uses the AdventureWorksDW database.

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  

D.D. CAST を使用してテキストをさらに読みやすくするUsing CAST to produce more readable text

この例では、SELECT リストの中で CAST を使用し、Name 列を char(10) 型の列に変換します。This example uses CAST in the SELECT list, to convert the Name column to a char(10) column. AdventureWorksDW データベースを使用します。It uses the AdventureWorksDW database.

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        ListPrice
----------  ---------
Long-Sleev  31.2437
Long-Sleev  32.4935
Long-Sleev  49.99  

E.E. CAST を LIKE 句と共に使用するUsing CAST with the LIKE clause

この例では、money 列の SalesYTD の値をデータ型 int に変換した後、データ型 char(20) に変換して、LIKE 句で使用できるようにします。This example converts the money column SalesYTD values to data type int, and then to data typechar(20), so that the LIKE clause can use it.

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         BusinessEntityID
---------------- ------------------- ---------------- -------------
Tsvi             Reiter              2811012.7151      279
Syed             Abbas               219088.8836       288
Rachel           Valdez              2241204.0424      289
(3 row(s) affected)  

F.F. CONVERT または CAST を、型指定された XML と共に使用するUsing CONVERT or CAST with typed XML

これらの例では、XML データ型と列 (SQL Server) で CONVERT を使用し、型指定された XML への変換を行います。These examples show use of CONVERT to convert data 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):

SELECT 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):

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

次の例では、空白、テキスト、マークアップのある文字列を、型指定された XML にキャストします。This example casts a string with white space, text, and markup into typed XML:

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

他の例については、「XML データのインスタンスの作成」をご覧ください。See Create Instances of XML Data for more examples.

G.G. CAST および CONVERT を datetime データと共に使用するUsing CAST and CONVERT with datetime data

GETDATE() の値以降、この例では、現在の日付と時刻を表示し、CAST を使用して現在の日付と時刻を文字列データ型に変更した後、CONVERT を使用して ISO 8901 形式で日付と時刻を表示します。Starting with GETDATE() values, this 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 to 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)  

この例は、前の例とほぼ逆になります。This example is approximately the opposite of the previous example. この例では、日付と時刻を文字型データとして表示し、CAST を使用して文字型データを datetime データ型に変更します。さらに、CONVERT を使用して、文字型データを datetime データ型に変換します。This 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)  

H.H. CONVERT をバイナリ データおよび文字データと共に使用するUsing CONVERT with binary and character data

これらの例では、さまざまなスタイルを使用してバイナリ データと文字データを変換した結果を示します。These examples show the results of binary and character data conversion, 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)  

この例では、Style 1 が結果の切り捨てを強制できることを示します。This example shows that Style 1 can force result truncation. 結果セット内の文字 0x は、切り捨てを強制します。The characters 0x in the result set force the truncation.

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)  

この例は、結果に文字 0x が含まれていないため、Style 2 は結果を切り捨てないことを示しています。This example shows that Style 2 does not truncate the result, because the result does not include the characters 0x.

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)  

I.I. 日付と時刻のデータ型の変換Converting date and time data types

この例では、date、time、および datetime データ型の変換の例を示します。This example shows 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 WarehouseParallel Data WarehouseExamples: Azure SQL データ ウェアハウスAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

J.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 the ListPrice of these products to int. It uses the AdventureWorksDW database.

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 データベースを使用します。It uses the AdventureWorksDW database.

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

K.K. CAST を算術演算子と共に使用するUsing CAST with arithmetic operators

この例では、製品単価 (UnitPrice) を割引率 (UnitPriceDiscountPct) で割り、単一列の値を計算します。This example calculates a single column value by dividing the product unit price (UnitPrice) by the discount percentage (UnitPriceDiscountPct). この結果は、最も近い整数に丸められ、最終的に int データ型に変換されます。This result is then rounded to the nearest whole number, and finally converted to an int data type. この例では、AdventureWorksDW データベースを使用します。This example uses the AdventureWorksDW database.

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  

L.L. CAST を LIKE 句と共に使用するUsing CAST with the LIKE clause

この例では、moneyListPriceint 型に変換して、次に LIKE 句と共に使用できるよう char(20) 列に変換します。This example converts the money column ListPrice to an int type, and then to a char(20) type, so that the LIKE clause can use it. この例では、AdventureWorksDW データベースを使用します。This example uses the AdventureWorksDW database.

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

M.M. CAST および CONVERT を datetime データと共に使用するUsing CAST and CONVERT with datetime data

この例では、現在の日付と時刻を表示し、CAST を使用して現在の日付と時刻を文字列データ型に変更した後、最終的に CONVERT を使用して ISO 8601 形式で日付と時刻を表示します。This example displays the current date and time, uses CAST to change the current date and time to a character data type, and finally uses CONVERT display the date and time in the ISO 8601 format. この例では、AdventureWorksDW データベースを使用します。This example uses the AdventureWorksDW database.

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  

この例は、前の例とほぼ逆になります。This example is the rough opposite of the previous example. この例では、日付と時刻を文字型データとして表示し、CAST を使用して文字型データを datetime データ型に変更します。さらに、CONVERT を使用して、文字型データを datetime データ型に変換します。This 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 データベースを使用します。This example uses the AdventureWorksDW database.

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

データ型の変換 (&) #40";"データベース エンジン"&"#41 です。Data Type Conversion (Database Engine)
FORMAT (Transact-SQL)FORMAT (Transact-SQL)
STR (Transact-SQL)STR (Transact-SQL)
SELECT (Transact-SQL)SELECT (Transact-SQL)
システム関数 (Transact-SQL)System Functions (Transact-SQL)
国際化に対応した Transact-SQL ステートメントの記述Write International Transact-SQL Statements