フォーマットされた文字列を日付 (あるいは日付をフォーマットされた文字列) に変換する汎用 SQL 文字列関数です。
Synopsis
TO_DATE(date-expression[,format])

TODATE(date-expression[,format])
引数
date-expression 変換される式。式は、DATE データ型値または 1 ~ 2980013 の整数になります。format が指定される場合、基本データ型が CHAR または VARCHAR2 になる文字列日付式にもなります。
format オプションdate-expression の形式を指定する日付形式。'J' が指定される場合、date-expression は整数となります。format が省略される場合、'DD MON YYYY' が既定値です。
概要
TO_DATETODATE は互換性があり、Oracle 互換性のためにサポートされています。
TO_DATE 関数には、以下の 2 つの使用法があります。
TO_DATE は、さまざまな文字列フォーマットで日付を入力して表示するために使用されます。DATE データ型の変換を実行するには、CAST 関数または CONVERT 関数を使用します。
以下のメソッド・コールを使用することで、Caché ObjectScript からこの関数を呼び出すこともできます。
$SYSTEM.SQL.TODATE(date-expression,format)
日付フィールド検索の表示形式
TO_DATE を使用して、日付フィールドの検索に対する表示形式を指定します。TO_DATE のこの形式は、データベースからの値の検索を目的として、SELECT 文内で主に使用されます。
date-expression 値は、有効な Logical %Date 値でなければならず、その値は DATE データ型の値か、0 (12/31/1840) から 2980013 (12/31/9999) の間の整数値のいずれかになります。TO_DATE は、日付 (例えば、59589) に対応する整数 date-expressionを受け取ります。$HOROLOG 日付/時刻文字列 (例えば、“59589,43381”) は受け取りません。TO_DATE は、指定された format 内の対応する日付を含む文字列を返します。
format が指定されていない場合、TO_DATE は、DD MON YYYY でフォーマットされた日付を返します。例えば、'11 Nov 1993' です。
以下の例は、既定の format を使用して有効な date-expression を指定する複数の方法を示しています。TO_NUMBER
SELECT DISTINCT DOB,
   TO_DATE(DOB) AS DateIn,
   TO_DATE(59651) AS IntIn,
   TO_DATE('59651') AS IntStrIn,
   TO_DATE(CAST('1993-11-12' AS DATE)) AS DateCastIn
FROM Sample.Person
形式の要素
format は、以下の規則に従って指定された 1 つまたは複数の形式要素の文字列です。
以下のテーブルは、整数を日付文字列に変換する際に format パラメータに対して有効な日付形式要素のリストです。
要素 意味
D 曜日 (1-7、1 は日曜日を指す)
DD 2 桁の日付 (01-31)。
DY 現在のロケールの WeekdayAbbr プロパティによって指定される、曜日の略名。既定は、Sun Mon Tue Wed Thu Fri Sat です。
DAY 現在のロケールの WeekdayName プロパティが指定する曜日名。既定は、Sunday Monday Tuesday Wednesday Thursday Friday Saturday です。
MM 2 桁の月数 (01-12、01 = 1 月)。
MON 現在のロケールの MonthAbbr プロパティによって指定される月の略名。既定は、Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec です。略名の後にはピリオドを付けません。
MONTH 現在のロケールの MonthName プロパティによって指定される正式な月名。既定は、January February March April May June July August September October November December です。
RR 2 桁の年数。
YYYY 4 桁の年数。
YYY 下 3 桁の年数
YY 下 2 桁の年数。
Y 下 1 桁の年数
SET OPTION 文を使用して、これらの要素の既定値を変更できます。
ユリウス日
“ユリウス” 日の形式は、1840 年より前 (および 9999 年より後) の日付の表示を可能にするために提供されています。
文字 'J' を含む文字列で構成される format を指定する場合、返される日付は、紀元前 (BCE) 4713 年 1 月 1 日からカウントされた “ユリウス” 日になります。文字 'J' のみが、この format 文字列内で指定できます。その他すべての文字を取り込むと、文字 'J' がリテラルとして処理され、日付は標準の日付として変換されます。
ユリウス日は、既定形式 DD MON YYYY で表示し、BCE (西暦紀元前) の日付に対して接尾語の文字 'BC' を追加します。現在により近い (CE または AD) 日付には接尾辞を付けません。
ユリウス日には、最大 date-expression 値はありません。
以下の例は、29 May 4550BC を返します。
SELECT DISTINCT TO_DATE(59684,'J') AS Julian_Date
FROM Sample.Person
以下の例は、09 May 2005 を返します。
SELECT DISTINCT TO_DATE(2453500,'J') AS Julian_Date
FROM Sample.Person
日付フィールド検索の例
以下の例は、日付整数 (1840 年 12 月 31 日からの日数) を受け取り、指定された形式で対応する日付を返します。
SELECT DISTINCT TO_DATE(59684,'MM/DD/YYYY')
FROM Sample.Person
これは、05/29/2004 を返します。
SELECT DISTINCT TO_DATE(59684,'DAY MONTH DD, YYYY')
FROM Sample.Person
これは、Saturday May 29, 2004 を返します。
SELECT DISTINCT TO_DATE(59684)
FROM Sample.Person
これは、29 May 2004 を返します。
SELECT DISTINCT TO_DATE(59684,'I went to the store on DAY.')
FROM Sample.Person
これは、I went to the store on Saturday. を返します。
以下の例は、DATE データ型のフィールドを受け取り、この日付のフォーマットされたバージョンを返します。
SELECT DISTINCT DOB, TO_DATE(DOB,'DAY MONTH DD, YYYY')
FROM Sample.Person
以下の例は、日付関数を受け取り、指定された形式内の現在の日付を返します。
SELECT DISTINCT TO_DATE(CURRENT_DATE,'MM/DD/YYYY')
FROM Sample.Person
SELECT DISTINCT TO_DATE({fn CURDATE()})
FROM Sample.Person
SELECT DISTINCT TO_DATE({fn CURDATE},'I went to the store on DAY.')
FROM Sample.Person
日付変換の入力形式
次に、TO_DATE を使用して、日付の入力形式を指定し、Logical %Date 値に変換します。date-expression の値は、文字列日付式でなければなりません。date-expression の形式はformat パラメータ内で指定されます。formatdate-expression を有効な %Date 論理値に変換するキーとして使用されます。
以下のテーブルは、TO_DATE のこのバージョンでの format パラメータに対する有効な日付形式要素を示しています。
要素 意味
DD 2 桁の日付 (01-31)。
MM 2 桁の月数 (01-12、01 = 1 月)。
MON 現在のロケールの MonthAbbr プロパティによって指定される月の略名。既定は、前のテーブルと同じです。
MONTH 現在のロケールの MonthName プロパティによって指定される正式な月名。既定は、前のテーブルと同じです。
YYYY 4 桁の年数。
YY 下 2 桁の年数。
入力形式の例
以下の例は、日付文字列を受け取り、それを指定された形式コードに従って解釈し、対応する $HOROLOG 日付整数を返します。
SELECT DISTINCT TO_DATE('May 29, 2004','MONTH DD, YYYY')
FROM Sample.Person
これは、59684 を返します。
SELECT DISTINCT TO_DATE('2004***05***29','YYYY***MM***DD')
FROM Sample.Person
これは、59684 を返します。
SELECT DISTINCT TO_DATE('05/29/2004','MM/DD/YYYY')
FROM Sample.Person
これは、59684 を返します。
SELECT DISTINCT TO_DATE('29 May 2004')
FROM Sample.Person
これは、59684 を返します。
関連項目