ソートマージ


付録J 日付時刻データの形式(SORT EEの機能)

日付時刻データについて説明します。

キー・項目属性「h」の日付時刻は,日付と時刻を組み合わせた数字データです。

データ形式

データ形式を次に示します。

[図データ]

入力時の注意事項

入力時の注意事項を次に示します。

  • 入力データのタイムゾーン指定子(TZD)は参照しません。実行システムのローカルタイムとして扱います。

  • タイムゾーン指定子(TZD)までを日付時刻データとして扱います。入力データに「Z」,「+」および時刻以降の「-」を検知した場合は,以降のデータは無視されます。

  • 入力データは項目の区切り文字で区切り,それぞれのデータの左端をそろえて入力します。

  • 指定された桁(引用符,項目区切り文字,および桁修飾文字は含まない)を超えるデータが入力された場合,指定された桁数を超えた部分(後ろ)のデータを無視します。

  • 指定された桁(引用符,項目区切り文字,および桁修飾文字は含まない)よりも少ない桁のデータが入力された場合は,埋め字を仮定し指定された桁数に調整します。調整する位置および埋め字は,データの有無および書式によって異なります。

日付時刻データの端数処理

日付時刻データの端数処理を次の表に示します。

書式

桁不足

入力データなし※8

埋め字の位置

埋め字データ

日付

桁修飾文字あり

エラー※1※2

エラー※1※3

前側※6

数字「0」

01月を仮定

前側※6

数字「0」

01日を仮定

桁修飾文字なし

入力データが4桁未満

エラー※1※4

エラー※1※5

入力データが4桁以上

後ろ側※7

数字「0」

時刻

桁修飾文字あり

前側

数字「0」

00時を仮定

前側

数字「0」

00分を仮定

前側

数字「0」

00秒を仮定

ミリ秒

後ろ側

数字「0」

000ミリ秒を仮定

桁修飾文字なし

後ろ側

数字「0」

00時00分00秒

000ミリ秒を仮定

(凡例)

−:該当なし

注※1

キー指定の場合は,KBLS1211-Eメッセージが表示されてエラーになります。

比較項目指定の場合は,KBLS1320-Eメッセージが表示されてエラーになります。

注※2

コマンドオプション「-cmdopt DATETIMENOCHK」が指定された場合は,後ろ側に数字「0」を仮定します。

注※3

コマンドオプション「-cmdopt DATETIMENOCHK」が指定された場合は,「1900(1900年)」を仮定します。

注※4

コマンドオプション「-cmdopt DATETIMENOCHK」が指定された場合,年は後ろ側に「0」を,月および日は「01(01月または01日)」を仮定します。

注※5

コマンドオプション「-cmdopt DATETIMENOCHK」が指定された場合は,「19000101(1900年01月01日)」を仮定します。

注※6

月および日に1桁の「0(0月または0日)」が入力された場合は,注※1に示すエラーとなります。

例えば,「2013/1/1」が入力された場合は「20130101(2013年01月01日)」を仮定しますが,「2013/0/0」が入力された場合はエラーとなります。

注※7

後ろ側に数字「0」を仮定することで,月および日が「00」となった場合は,「01」を仮定します。ただし,月および日に1桁の「0(0月または0日)」が入力された場合は,注※1に示すエラーとなります。例えば,「201301」が入力された場合は「20130101(2013年01月01日)」を仮定しますが,「2013010」が入力された場合はエラーとなります。

注※8

「入力データなし」とは,指定したセルの書式に示すデータの一部がなかった場合を示します。日付および時刻データともに入力されていない場合は,NULLセルとして処理します。

コマンドオプション「-cmdopt DATETIMENOCHK」の詳細については,「5.5.13 日付時刻データのチェックオプション(DATETIMENOCHKオプション)」を参照してください。

日付時刻データの端数処理についての注意事項を次に示します。

  • 桁修飾文字(スラント,ハイフン,コロン,またはピリオド)で年月日および時分秒ミリ秒を区切っている場合,日付のM(月),D(日),および時刻のh(時),m(分),s(秒),f(ミリ秒)部分のデータは1桁でもかまいません。1桁データは2桁または3桁に調整されます。例えば,「2013-7-7T8:3:5.1」と「2013-07-07T08:03:05.100」は同じ値として扱われます。

  • 日付時刻データを桁修飾文字(スラント,ハイフン,コロン,またはピリオド)で区切っている場合は,年月日時分秒ミリ秒のそれぞれの桁ごとに桁調整されます。

  • 日付時刻として正しくないデータの場合も,扱える値の範囲内であればエラーにしないで日付,時刻またがりデータとして扱います。例えば,「2013-11-31」は「2013-12-01」,「20:59:99」は「21:00:39」として扱います。

指定例

指定例を次に示します。

入力データ(書式)

有効桁の指定(日付,時刻)

内部データ形式

説明

2013-08-05T19:08:53.068

(YYYY-MM-DDThh:mm:ss.fff)

6,4

2013081908

有効桁以外の部分(DD,ss,fff)は入力されません。

0,9

190853068

時刻データだけ比較対象となり,日付(YYYYMMDD)は入力されません。

19876/054/0321△098.076.0543.21098

(YYYY/MM/DD△hh.mm.ss.fff)

8,9

19870503090705210

それぞれの桁あふれ部分(下線部分)は入力されません。

YYYY:19876

MM:054

DD:0321

hh:098

mm:076

ss:0543

fff:21098

2013T201320

(YYYYThh)

6,6

201301201320

日付の月データがなかったため,1月(01)を仮定値とし,日付を6桁に調整します。

20130805190853068

(YYYYMMDD)

6,4

2013080000

区切り文字がないため,時刻データを検知できず,0時0分(0000)を仮定します。

2013/8/10△7:27:53.250

(YYYY/MM/DD△hh:mm:ss.fff)

8,9

20130810072753250

前側(MM,hh)に0(ゼロ)を仮定値とし,日付時刻を17桁に調整します。

20130807T320808080

(YYYYMMDDThhmmssfff)

8,9

20130808080808080

hhに24以上が入力されたため,時刻またがりによって内部データを変更します。

(凡例)

△:空白を示す。

T:区切り文字「T」を示す。

注意事項
  • 日付時刻データの数値部分だけが有効桁数の対象です。データの先頭と末尾を囲んでいる引用符,項目区切り文字(「T」または空白),桁修飾文字(スラント,ハイフン,コロン,またはピリオド),および12時間制表記は,有効桁に含まれません。

  • 日付時刻データの端数および日付時刻またがり処理によって,入力セルデータが変更されることはありません。

  • 入力データは実行システムのローカルタイムとして解釈し,世界協定時(UTC)に正規化します。正規化した時刻が,日付時刻の指定可能な範囲内でなければ不正なデータと見なします。

  • 日付データの有効桁に「8」を,時刻データの有効桁に「2」以上を指定している場合,桁調整後のローカルタイムが世界協定時(UTC)の範囲内に収まらない場合がありますので,注意してください。世界協定時(UTC)の範囲外となる例を次に示します。

    (例)

    実行システムのローカルタイムのタイムゾーン:UTC+09:00

    キーの指定「h+1-8,2」:日付データの有効桁「8」,時刻データの有効桁「2」

    入力データ

    桁調整

    (括弧は埋め字)

    世界協定時(UTC)

    1970

    1970

    (01)

    (01)

    (00)

    9時間減算すると「1970年01月01日0時0分0.0秒」以前となるため,不正データと見なされます。

    1970-01

    1970

    01

    (01)

    (00)

    1970-01-01

    1970

    01

    01

    (00)

    1970-01-01T08

    1970

    01

    01

    08

    1970-01-01T09

    1970

    01

    01

    09

    9時間減算すると「1970年01月01日0時0分0.0秒」となり,正常データとして処理されます。