ソートマージ


付録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秒」となり,正常データとして処理されます。