付録J 日付時刻データの形式(SORT EEの機能)
日付時刻データについて説明します。
キー・項目属性「h」の日付時刻は,日付と時刻を組み合わせた数字データです。
データ形式
データ形式を次に示します。
-
日付時刻のデータ形式は,日付,時刻,12時間制表記の順になります。
-
日付のY(年),M(月),D(日),および時刻のh(時),m(分),s(秒),f(ミリ秒)には,それぞれ0〜9の数字を指定します。各項目の指定可能な桁数と値は次のとおりです。
書式
項目
桁
値
日付
YYYY
年(西暦年4桁)
4
-
Windows版,64ビット版UNIX(AIX 5L V5.2を除く):1970〜2900
-
32ビット版UNIX,64ビット版AIX 5L V5.2:1970〜2037
MM
月
2
1〜99
DD
日
2
1〜99
時刻
hh
時
2
12時間制表記なし:0〜99
12時間制表記あり:0〜87
mm
分
2
0〜99
ss
秒
2
0〜99
fff
秒の小数部(ミリ秒)
3
0〜999
12時間制表記※
AM
am
A.M.
a.m.
午前を示す
−
−
PM
pm
P.M.
p.m.
午後を示す
−
−
T
日付と時刻の区切り
−
−
空白
日付,時刻,12時間制表記の区切り
−
−
-
-
日付時刻の指定可能な範囲は,使用するSORT EEのコマンド,およびコマンド実行システムによって異なります。
OS
指定可能な範囲
exsortコマンド
exsort64コマンド
Windows
19700101T000000000(世界協定時(UTC)の1970年1月1日0時0分0.0秒)〜29009999T999999999(世界協定時(UTC)の2900年99月99日99時99分99.999秒)
Linux
19700101T000000000(世界協定時(UTC)の1970年1月1日0時0分0.0秒)〜20371231T235959999(世界協定時(UTC)の2037年12月31日23時59分59.999秒)
Windowsと同じ
HP-UX
Linuxのexsortコマンドと同じ
Windowsと同じ
AIX
AIX 5L V5.2
Linuxのexsortコマンドと同じ
Linuxのexsortコマンドと同じ
AIX 5L V5.3以降
Linuxのexsortコマンドと同じ
Windowsと同じ
-
時を12時間制で表記した場合は,12時間制表記を設定します。
-
日付と時刻は,「T」または空白で区切ります。
-
時刻と12時間制表記は,空白で区切ります。
-
日付時刻は0〜9の数字以外に,次の文字をデータに含むことができます。
書式
項目
/(スラント)
年月日の桁修飾
-(ハイフン)
年月日の桁修飾
.(ピリオド)
年月日,時分秒の桁修飾
:(コロン)
時分秒の桁修飾
'(シングルクォーテーション)
引用符
"(ダブルクォーテーション)
引用符
-
1桁の長さ(nバイト)は入力ファイルのエンコードによって異なります。
codetype指定値
1桁の長さ(nバイト)
ASCII,SJIS,EUC-JP,EUC-HJ,またはUTF-8
1バイト
UCS-2LE,UCS-2BE,UTF-16LE,またはUTF-16BE
2バイト
UCS-4LE,UCS-4BE,UTF-32LE,またはUTF-32BE
4バイト
- 入力時の注意事項
-
入力時の注意事項を次に示します。
-
入力データのタイムゾーン指定子(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秒」となり,正常データとして処理されます。
-