日時をストリングとしてフォーマット設定および構文解析する

以下に、パターン文字のストリングを使用して dateTime 形式を指定する方法に関する情報を記載します。

日付または時刻をストリングに変換するとき、変換を誘導するための形式のパターンを適用できます。 これが適用されるのは、日付または時刻からストリングに変換する場合、 またはストリングを日付または時間に構文解析する場合です。

フォーマット (例えば、日時からストリングへ) の際に、パターンまたはトークンのセットが対応するソースに置き換わります。 図 1 は、これが適用される方法を表現しています。

図 1. パターンを使用して dateTime ソースをフォーマットし、ストリング出力を生成する

ストリングが構文解析されるとき (例えば、 それを dateTime に変換するときなど)、パターンまたはトークンのセットが使用されて、 ターゲットの dateTime のどの部分がストリングのどの部分によって表現されているのかを判別します。 図 2 は、これが適用される方法を表現しています。

図 2. パターンを使用してストリング・ソースを構文解析し、dateTime 出力を生成する

構文

式のパターンは、以下のように定義されます。

   .--------------.
   | .- -.        |
     V  V  |        |
  >------+-symbol-+->
                '-string-'

ここで、
symbol
セット adDeEFGhHIkKmMsSTUwWyYzZ 内の文字。
string
単一引用符で囲まれた、一連の文字。 ストリング内に単一引用符が必要な場合には、2 つの単一引用符 ('') を使用できます。

dateTime をストリングとしてフォーマットするための文字

以下の表は、dateTime に関連してストリングをフォーマットまたは構文解析する際に使用できる、許容される文字をリストしています。

記号 意味 表示内容
a AM または PM のマーク文字 テキスト 入力は、am、AM、pm、PM。出力は、AM または PM
d 日 (1 から 31) 数値 1, 20
dd 日 (01 から 31) 数値 01, 31
D 日 (1 から 366) 数値 3, 80, 100
DD 日 (01 から 366) 数値 03, 80, 366
DDD 日 (001 から 366) 数値 003
e 曜日 (1 ~ 7) 数値 26
EEE 曜日 テキスト Tue
EEEE 曜日 テキスト Tuesday
F 月単位の曜日 (1-5) 数値 2 (7 月の第 2 水曜日を示す)3
G Era テキスト BC または AD
h AM または PM の時間 (1 ~ 12) 数値 6
hh AM または PM の時間 (01 から 12) 数値 06
H 24 時間形式での時刻 (0 から 23) 数値 77
HH 24 時間形式での時刻 (00 から 23) 数値 077
I ISO8601 日時 (最大 yyyy-MM-dd'T'HH:mm:ss.SSSZZZ) テキスト 2004-10-07T12:06:56.568+01:005
IU ISO8601 日時 (上記と同様。ただし、時間帯が +00:00 であれば ZZZ の出力は "Z") テキスト 2004-10-07T12:06:56.568+01:00, 2003-12 -15T15:42:12.000Z 5
k 24 時間形式での時刻 (1 から 24) 数値 87
k 24 時間形式での時刻 (01 から 24) 数値 087
K AM または PM の時間 (0 ~ 11) 数値 9
KK AM または PM の時間 (00 から 11) 数値 09
m 数値 4
mm 数値 04
M 数字による月 数値 5, 12
MM 数字による月 数値 05, 12
MMM 名前による月 テキスト Jan、Feb
MMMM 名前による月 テキスト January、February
s 数値 5
ss 数値 05
S デシ秒 数値 78
SS センチ秒 数値 708
SSS ミリ秒 数値 7008
SSSS 1/10,000 秒 数値 70008
SSSSS 1/100,000 秒 数値 700008
SSSSSS 1/1,000,000 秒 数値 7000008
T ISO8601 時間 (最大 HH:mm:ss.SSSZZZ) テキスト 12:06:56.568+01:005
TU ISO8601 時間 (上記と同様。ただし、時間帯の +00:00 は 'Z' に置き換わる) テキスト 12:06:56.568+01:00, 15:42:12.000Z5
w 週 (年単位) 数値 7、532
ww 週 (年単位) 数値 07、532
W 週 (月単位) 数値 24
yy 数値 961
yyyy 数値 19961
YY 年: 週と共に使用する場合のみ 数値 962
YYYY 年: 週と共に使用する場合のみ 数値 19962
zzz 時間帯 (省略名) テキスト gmt
zzzz 時間帯 (完全名) テキスト Greenwich Mean Time
Z 時間帯 (+/-n) テキスト +3
ZZ 時間帯 (+/-nn) テキスト +03
ZZZ 時間帯 (+/-nn:nn) テキスト +03:00
ZZZU 時間帯 (ZZZ と同様。"+00:00" は "Z" に置き換わる) テキスト +03:00, Z
ZZZZ 時間帯 (GMT+/-nn:nn) テキスト GMT+03:00
ZZZZZ 時間帯 (ZZZ と同様。ただしコロンはない) (+/-nnnn) テキスト +0300
' テキストのエスケープ   'ユーザー・テキスト'
'' (2 つの単一引用符) エスケープされたテキスト内の単一引用符   'o''clock'

dateTime オブジェクトの表示は、以下のように、指定するシンボルによって異なります。

注 : 上記の表の注について以下に説明します。
  1. 年は特殊ケースとして扱われます。
    • 出力時には、y の個数が 2 の場合は、年は 2 桁に切り捨てられます。例えば、yyyy1997 となる場合、yy97 となります。
    • 入力時には、2 桁の年のために世紀ウィンドウが 53 に固定されます。例えば、入力データが 52 の場合、出力の年値は 2052 になり、53 の場合は 1953 年、97 の場合は 1997 年になります。
  2. ESQL では、年の最初の日が最初の週に属すると想定されるため、1 月 1 日は必ず第 1 週に含まれます。このため、1 つの年の中で相対的に指定される日付が、実際には別の年の日付である可能性があります。例えば、EEEE' week 'w' 'YYYY を使って構文解析される「Monday week 1 2005」は 2004 年 12 月 27 日となります。2005 年の第 1 週の月曜日は、実際には 2004 年の日付であるためです。

    y シンボルを使用すると、調整は行われず、年末前後の日付の場合は予測不能な結果になることがあります。例えば、ストリング「2005 01 Monday」が以下のように形式設定される場合、

    • 形式制御ストリング YYYY ww EEEE では、「2005 年の第 1 週の月曜日」は 2004 年 12 月 27 日と正しく解釈されます。
    • 形式制御ストリング yyyy ww EEEE では、「2005 年の第 1 週の月曜日」は 2005 年 12 月 27 日と誤って解釈されます。
  3. 2001 年 7 月 11 日は、7 月の第 2 水曜日なので、 形式制御ストリング yyyy MMMM EEEE F を使用して 2001 July Wednesday 2 と表せます。 これは 2001 年 7 月の第 2 週の水曜日 (これは 2001 年 7 月 4 日) ではありません。
  4. 月の第 1 週と最終週に、前後の月の日が含まれることがあります。 たとえば、 2001 年 7 月 31 日火曜日を 2001 年 8 月第 1 週の火曜日 として表せます。 この場合は、形式制御ストリング yyyy MM W EEEE を使用して 2001 08 1 Tuesday と指定します。
  5. 『ISO8601、I および T 日時トークン』を参照してください。
  6. 曜日フィールドに指定される値は、以下のように固定されます。
    • 1 - 日曜日
    • 2 - 月曜日
    • 3 - 火曜日
    • 4 - 水曜日
    • 5 - 木曜日
    • 6 - 金曜日
    • 7 - 土曜日
  7. 24 時間フィールドが競合する am/pm フィールドとともに指定される場合、結果があいまいになる場合があります。
  8. 秒の端数。長さは入力時のフォーマット記号の数値と暗黙的に一致している必要があります。 出力は指定された長さに丸められます。
  9. 長いタイム・ゾーンは、「大陸/都市」形式で使用するときに最適に作動します。 同様に、Unix システムでは、TZ 環境変数は「大陸/都市」形式を使用して指定する必要があります。

ISO8601、I および T 日時トークン

日時値が ISO8601:2000「日時の表記」規格に準拠している場合は、フォーマット・シンボル I および T が使用可能かどうかを考慮してください。これらは、ISO8601 規格の特に以下のサブセットと一致します。

以下のシンボルは単独でのみ使用する必要があります。

出力では、論理データ・タイプに応じて以下の形式が適用されます。

論理 MRM データ・タイプ 論理 ESQL データ・タイプ 出力形式
xsd:dateTime TIMESTAMP または GMTTIMESTAMP yyyy-MM-dd'T'HH:mm:ss.SSSZZZ
xsd:date DATE yyyy-MM-dd
xsd:gYear INTERVAL yyyy
xsd:gYearMonth INTERVAL yyyy-MM
xsd:gMonth INTERVAL --MM
xsd:gmonthDay INTERVAL --MM-dd
xsd:gDay INTERVAL ---dd
xsd:time TIME / GMTTIME 'T'HH:mm:ss.SSSZZZ
注:
  • 入力時は I と T の両方で、協定世界時 (UTC) との時差がゼロであることを示す '+00:00' および 'Z' が受け入れられますが、出力時は常に '+00:00' が生成されます。出力時に常に 'Z' を生成する必要がある場合は、代わりに IU または TU の代替フォーマット・シンボルを使用する必要があります。
  • ZZZ では、協定世界時 (UTC) との時差がゼロであることを示すために常に '+00:00' が出力されます。出力時に常に 'Z' を生成する必要がある場合は、代わりに ZZZU の代替形式を使用する必要があります。

出力での入力 UTC 形式の使用

dateTime をストリングとして含む論理タイプ xsd:dateTime または xsd:time のエレメントまたは属性は、Z 文字または時間帯 +00:00 のどちらかを使用することにより、協定世界時 (UTC) を使用できます。 入力の際に、MRM パーサーはそのようなエレメントおよび属性の UTC 形式を記憶します。 出力の際に、エレメントまたは属性の dateTime 形式プロパティーを使用することにより、 Z または +00:00 を表示するかどうかを指定できます。 またはその代わりに、メッセージ・セット・プロパティー「出力時に入力 UTC 形式を使用」にチェックを付けることにより、入力 UTC 形式を保存することもできます。 このプロパティーにチェック・マークが付いている場合には、UTC 形式が出力メッセージに保存され、「日時形式」プロパティーにより暗黙的に示される形式をオーバーライドします。

次の表は、dateTime 形式のいくつかの例を示しています。

形式のパターン 結果
"yyyy.MM.dd'at'HH:mm:ss ZZZ" 1996.07.10 at 15:08:56 -05:00
EEE, MMM d, "yy" Wed, July 10, '96
"h:mm a" 8:08 PM
"hh 'o''clock' a, ZZZZ" 09 o'clock AM, GMT+09:00
"K:mm a, ZZZ" 9:34 AM, -05:00
"yyyy.MMMMM.dd hh:mm aaa" 1996.July.10 12:08 PM
関連概念
メッセージのモデル化
メッセージ・モデル
関連タスク
メッセージ・モデルの開発
メッセージ定義ファイルの処理
メッセージ・モデル・オブジェクトの処理
関連資料
メッセージ・モデルの参照情報
メッセージ・モデル・オブジェクトのプロパティー
CAST 関数
数値をストリングとしてフォーマット設定および構文解析する
サポートされる CAST
暗黙のキャスト
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ak05616_