与えられた式を、特定のデータ型に変換する汎用スカラ・システム関数です。
Synopsis
{fn CONVERT(expression,datatype)}
CONVERT(datatype,expression,format-code)
ここでは、
CONVERT 関数の 2 種類の実装について説明します。いずれも特定のデータ型の式を別のデータ型の対応値に変換します。両方とも、主に日付と時刻の変換に使用されます。
Note:
これら 2 種類の
CONVERT の実装では、引数の表示順序が異なります。1 つ目は、引数 2 つの Caché ODBC スカラ関数です。2 つ目は、MS SQL Server との互換性がある汎用関数で、引数は 3 つです。これ以降は、これら 2 種類の形式の
CONVERT のそれぞれについて説明します。
{fn CONVERT(expression,datatype)}
これは、ODBC スカラ関数です。以下の ODBC の明示的データ型変換をサポートします。この形式の
CONVERT では、データ型を指定する "SQL_" キーワードを使用する必要があります。
SQL_VARCHAR は標準的な ODBC 表現です。SQL_VARCHAR に変換する場合、日時は適切な ODBC 表現に変換されます。つまり、数値のデータタイプは文字列に変換されます。SQL_VARCHAR から変換する場合、値は有効な ODBC Time、Timestamp、Date 表現である必要があります。
SQL_INTEGER または SQL_DOUBLE に変換する場合は、日付および時刻も含めてデータ値が数値表記に変換されます。SQL_DATE は1841年1月1日以降の日数を、SQL_TIME は午前0時からの秒数を示します。非数値文字が検出されると、入力文字列が切り捨てられます。SQL_INTEGER では、小数桁数も切り捨てられます。
NULL はどのデータ型に変換されても NULL のままです。
空文字列 ('')、あるいは非数値文字列値は以下のように変換されます。
-
SQL_VARCHAR と SQL_TIMESTAMP は、入力された値を返します。
-
SQL_INTEGER は、0 (ゼロ) に変換されます。
-
SQL_DATE と SQL_TIME は NULL に変換されます。
これ以外のデータ型変換は、"
CAST" 関数を参照してください。
CONVERT(datatype,expression,format-code)
これは、MS SQL Server 互換関数です。有効な Caché SQL データ型のいずれかをデータ型として取得します。Caché SQL でサポートされているデータ型の一覧については、"
データ型" を参照してください。
オプションの
format-code 引数は、date、datetime、time のいずれかの形式を指定します。この形式は、date/time/timestamp データ型から文字列への変換時の出力の定義、あるいは、文字列から date/time/timestamp データ型への変換時の入力の定義に使用できます。
format-code が指定されない場合、既定は
format-code 100 と同じになります。以下のコード値がサポートされています。
Caché SQL でサポートされているデータ型の一覧については、"
データ型" を参照してください。これ以外のデータ型変換は、"
CAST" 関数を参照してください。
以下の例は、"DOB" (誕生日) 列の日付を、SQL_TIMESTAMP データ型に変換します。
SELECT DOB,{fn CONVERT(DOB,SQL_TIMESTAMP)} AS DOBtoTstamp
FROM Sample.Person
以下の例は、"DOB" (誕生日) 列の日付を、SQL_INTEGER データ型に変換します。
SELECT DOB,{fn CONVERT(DOB,SQL_INTEGER)} AS DOBtoInt
FROM Sample.Person
生成される整数は 1840 年 12 月 31 日からの、$HOROLOG カウントになります。
以下の例は、DOB (誕生日) 列の日付を、SQL_VARCHAR データ型に変換します。
SELECT DOB,{fn CONVERT(DOB,SQL_VARCHAR)} AS DOBtoVChar
FROM Sample.Person
以下の例は、
CONVERT の 2 番目の構文形式を使用します。誕生日フィールド (DOB) から形式化された文字列への複数の変換を示しています。
SELECT DOB,
CONVERT(VARCHAR(20),DOB) AS DOBDefault,
CONVERT(VARCHAR(20),DOB,100) AS DOB100,
CONVERT(VARCHAR(20),DOB,107) AS DOB107,
CONVERT(VARCHAR(20),DOB,114) AS DOB114,
CONVERT(VARCHAR(20),DOB,126) AS DOB126
FROM Sample.Person
既定の形式とコード 100 の形式は同じです。DOB フィールドには時刻値が格納されていないため、時刻を表示する形式 (ここでは、既定値、100、114、126) では、12:00AM (真夜中) を示すゼロ値が指定されます。コード 126 の形式は、日付と時刻の文字列を空白なしで表示します。