関数リファレンス > 日付 > 日付の概要
  

日付の概要

日付関数を使用することで、日付を丸める、切り詰める、比較する、日付の一部を抽出する、日付に算術演算を行う、などの操作を実行できます。日付関数には、日付データ型を持つ任意の値を渡すことができます。
日付変数を使用して、データ統合をホストするコンピュータの現在の日付またはセッションの開始時刻を取得します。
また、トランスフォーメーション言語には次の3種類の形式文字列があります。
日付フォーマット文字列
日付関数で日付の要素を指定するために使用します。
TO_CHARフォーマット文字列
戻り文字列の形式を指定するために使用します。
TO_DATEおよびIS_DATEフォーマット文字列
日付に変換する文字列やテストする文字列の形式を指定するために使用します。

Date/Timeデータ型

トランスフォーメーション言語では、汎用データ型を使って各種のソースからのデータを変換します。そのようなトランスフォーメーションのデータ型の1つとして、Date/Timeデータ型があります。データ統合は、日付をバイナリ形式で内部的に格納します。
日付関数は、Date/Time値のみを取ります。日付関数に文字列を渡すには、まずTO_DATEを使って文字をDate/Time値に変換します。例えば、次の式は文字列フィールドをDate/Time値に変換してから、各日付の月の数値に1を加えます。
ADD_TO_DATE( TO_DATE( STRING_PORT, 'MM/DD/RR'), 'MM', 1 )
注: データ統合は、西暦1753年から西暦9999年までの日付をサポートします。

ミリ秒

データ統合は、秒までの日時値をサポートします。
ミリ秒を含む日時値をインポートすると、データ統合では秒単位で切り詰められます。ミリ秒をサポートするターゲットカラムに日時値を書き込んだ場合、データ統合では日付のミリ秒の部分に0が挿入されます。

ユリウス日、修正ユリウス日、およびグレゴリオ暦

データ統合は、グレゴリオ暦システムの日付のみをサポートします。それ以外の方式で表現された日付はサポートされていません。
注: ユリウス暦の日付はユリウスと呼ばれ、データ統合ではサポートされていません。この用語をユリウスや修正ユリウス日と混同しないように注意する必要があります。
トランスフォーメーション言語には、Jフォーマット文字列を使用して修正ユリウス日(MJD)形式を処理する機能があります。
ある日付に対するMJDは、紀元前4713年1月1日深夜00時00分00秒を起点とした日数で表されます。定義により、MJDの時間部分は24時間の一部を表す10進数として表現されます。Jフォーマット文字列では、この時間部分は変換されません。
例えば、次のTO_DATE式は、SHIP_DATE_MJD_STRINGフィールドの文字列をデフォルト日付形式の値に変換します。
TO_DATE (SHIP_DATE_MJD_STR, 'J')
SHIP_DATE_MJD_STR
RETURN_VALUE
2451544
Dec 31 1999 00:00:00
2415021
Jan 1 1900 00:00:00
Jフォーマット文字列には日付の時間部分が含まれないため、戻り値では時間が00:00:00に設定されています。
Jフォーマット文字列をTO_CHAR式で使用することもできます。たとえば、TO_CHAR式でJフォーマット文字列を使用して、日付値をMJD値の文字列に変換できます。以下に例を示します。
TO_CHAR(SHIP_DATE, 'J')
SHIP_DATE
RETURN_VALUE
Dec 31 1999 23:59:59
2451544
Jan 1 1900 01:02:03
2415021
注: データ統合は、TO_CHAR式の日付の時刻部分を無視します。

2000年の日付

トランスフォーメーション言語の日付関数は、すべて西暦2000年問題に対応しています。データ統合は、西暦1753年から西暦9999年までの日付をサポートします。

RR形式文字列

トランスフォーメーション言語では、2桁の年を含む文字列を日付に変換するためのRRフォーマット文字列が提供されています。TO_DATEでRRフォーマット文字列を使用することにより、MM/DD/RR形式の文字列を日付に変換できます。RRフォーマット文字列による変換結果は、現在の年が何年であるかによって異なります。
現在の年が0~49の場合
現在の年が0~49の間(例: 2003年)で、変換元の文字列の年が0~49である場合、データ統合は、変換元の文字列の2桁の年を現在の世紀に足した値を返します。変換元の文字列の年が50~99の間である場合、データ統合は、変換元の文字列の2桁の年を前の世紀に足した値を返します。
現在の年が50~99の場合
現在の年が50~99の間(例: 1998年)で、変換元の文字列の年が0~49である場合、データ統合は、変換元の文字列の2桁の年を次の世紀に足した値を返します。元の文字列の年が50~99の間である場合、データ統合は、指定された2桁の年を現在の世紀に足した値を返します。
以下の表に、RRフォーマット文字列による日付への変換方法をまとめて示します。
現在の年
変換元の年
RRフォーマット文字列の戻り値
0~49
0~49
現在の世紀
0~49
50~99
前の世紀
50~99
0~49
次の世紀
50~99
50~99
現在の世紀

RRの例

次の式は、現在の年が1950年から2049年までの間は同じ結果を返します。
TO_DATE( ORDER_DATE, 'MM/DD/RR' )
ORDER_DATE
RETURN_VALUE
'04/12/98'
04/12/1998 00:00:00
'11/09/01'
11/09/2001 00:00:00

フォーマット文字列YYとRRの違い

トランスフォーメーション言語にはYYフォーマット文字列もあります。RRもYYもともに2桁の年を指定するフォーマット文字列です。YYとRRは、TO_DATE以外の日付関数で使用した場合はすべて同じ結果を返します。
TO_DATE式では、RRの場合とYYの場合で結果が異なります。
以下の表に、各フォーマット文字列が返す結果の違いを示します。
文字列
現在の年
TO_DATE(String、‘MM/DD/RR’)
TO_DATE(String、‘MM/DD/YY’)
04/12/98
1998
04/12/1998 00:00:00
04/12/1998 00:00:00
11/09/01
1998
11/09/2001 00:00:00
11/09/1901 00:00:00
04/12/98
2003
04/12/1998 00:00:00
04/12/2098 00:00:00
11/09/01
2003
11/09/2001 00:00:00
11/09/2001 00:00:00
2000年以降の日付については、YYを使用した場合に得られる値はRRの場合に比べて有用ではありません。21世紀の日付については、RRフォーマット文字列を使用することを推奨します。

データベースの日付

日付の形式はデータベースごと、あるいはアプリケーションごとに異なりますが、データ統合は、Dateデータ型を持つすべての日付を読み込むことができます。
一般に、データベースに格納される日付には日付と時刻の値が含まれています。日付には月、日、年が含まれ、時間には場合により時、分、秒が含まれます。これらのDate/Timeデータはどの日付関数にも渡すことができます。

フラットファイルの日付

トランスフォーメーション言語では、TO_DATE関数を使って文字列をDate/Time値に変換することができます。また、TO_DATEで変換する前に、IS_DATE関数を使って文字列が正しい日付かどうかを確認することもできます。
注: トランスフォーメーション言語の日付関数は、日付値のみを取ります。日付関数に文字列を渡したい場合は、まずTO_DATE関数を使って文字列をトランスフォーメーションのDate/Timeデータ型に変更します。

デフォルトの日付形式

このアプリケーションでは、日付を表す文字列を格納および操作する場合、デフォルトの日付形式を使用します。データ統合は日付をバイナリ形式で格納するため、データ統合は特定の状況ではデフォルトの日付形式のみを使用します。
次の操作を実行した場合、データ統合では、デフォルトの日付形式のみが使用されます。
Date/Timeフィールドを文字列フィールドに接続して日付を文字列に変換した場合。
アプリケーションでは、日付がデフォルトの形式(MM/DD/YYYY HH24:MI:SS)の文字列に変換されます。
文字列フィールドをDate/Timeフィールドに接続して文字列を日付に変換した場合。
アプリケーションが予期する文字列の値は、デフォルトの日付形式(MM/DD/YYYY HH24:MI:SS)です。入力値がこの形式に一致しない場合、または無効な日付の場合、データ統合はその行をスキップします。文字列がデフォルトの日付形式である場合、データ統合は文字列を日付値に変換します。
TO_CHAR(date, [format_string])を使用して日付を文字列に変換した場合。
フォーマット文字列を省略すると、データ統合はデフォルトの日付形式(MM/DD/YYYY HH24:MI:SS)の文字列を返します。フォーマット文字列を指定した場合、データ統合は指定された形式で文字列を返します。
TO_DATE(date, [format_string])を使用して文字列を日付に変換した場合。
フォーマット文字列が省略されている場合、データ統合が予期する文字列は、デフォルトの日付形式(MM/DD/YYYY HH24:MI:SS)です。フォーマット文字列が指定されている場合、データ統合が予期する文字列は、指定された形式です。
デフォルト日付形式のMM/DD/YYYY HH24:MI:SSには、以下のものが含まれます。