与えられた式を、特定のデータ型に変換する汎用スカラ・システム関数です。
Synopsis
{fn CONVERT(expression,datatype)}

CONVERT(datatype,expression,format-code)
引数
expression 変換する式。
datatype の変換後のデータ型。
format-code オプション — 日付および時刻の形式を指定する整数コード。date/time/datastamp データ型と文字データ型の変換に使用します。この引数は、2 番目の構文形式でのみ使用します。
概要
ここでは、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_TIMESTAMP (%TimeStamp) SQL_TIME, SQL_DATE, SQL_VARCHAR, SQL_TIMESTAMP
SQL_VARCHAR (%String) SQL_TIME, SQL_DATE
SQL_TIME (%Time) SQL_VARCHAR, SQL_INTEGER, SQL_TIMESTAMP, SQL_TIME
SQL_DATE (%Date) SQL_VARCHAR, SQL_INTEGER, SQL_TIMESTAMP, SQL_DATE
任意の非 BLOB データ型 SQL_INTEGER
任意の非 BLOB データ型 SQL_DOUBLE
任意の数値データ型 SQL_VARCHAR
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 のままです。
空文字列 ('')、あるいは非数値文字列値は以下のように変換されます。
これ以外のデータ型変換は、"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 と同じになります。以下のコード値がサポートされています。
2 桁の年コード 4 桁の年コード 形式
  0 または 100 Mon dd yyyy hh:mmAM (または PM)
1 101 mm/dd/yy
2 102 yy.mm.dd
3 103 dd/mm/yy
4 104 dd.mm.yy
5 105 dd-mm-yy
6 106 dd Mon yy
7 107 Mon dd, yy
8 108 hh:mm:ss
  9 または 109 Mon dd yyyy hh:mm:ss.nnnAM (または PM)
10 110 mm-dd-yy
11 111 yy/mm/dd
12 112 yymmdd
  13 または 113 dd Mon yyyy hh:mm:ss:nnn (24 時間制)
14 114 hh:mm:ss:nnn (24 時間制)
  20 または 120 yyyy-mm-dd hh:mm:ss (24 時間制)
  21 または 121 yyyy-mm-dd hh:mm:ss.nnn (24 時間制)
  126 yyyy-mm-ddThh:mm:ss.nnn (24 時間制)
  130 dd Mon yyyy hh:mm:ss:mmmAM (または PM)
  131 dd/mm/yy hh:mm:ss:mmmAM (または PM)
Caché SQL でサポートされているデータ型の一覧については、"データ型" を参照してください。これ以外のデータ型変換は、"CAST" 関数を参照してください。
以下の例は、"DOB" (誕生日) 列の日付を、SQL_TIMESTAMP データ型に変換します。
SELECT DOB,{fn CONVERT(DOB,SQL_TIMESTAMP)} AS DOBtoTstamp
     FROM Sample.Person
ここで得られるタイムスタンプは、yyyy-mm-dd hh:mm:ss 形式で表されます。
以下の例は、"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
ここで得られる文字列は yyyy-mm-dd 形式で表されます。
以下の例は、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 の形式は、日付と時刻の文字列を空白なしで表示します。
関連項目
データ型 CAST