ESQL 日期时间数据类型的表示

当应用程序向代理发送消息时,解释消息数据的方法取决于消息自身的内容和消息流的配置。如果应用程序发送将由一般 XML 解析器或 MRM 解析器解释的消息(具体使用哪种解析器解释由 XML 的实际格式决定),此应用程序便可以包含可用任何 XML 模式原语日期时间数据类型表示的日期或时间数据。

每部分 XML 模式数据类型的数据都可以转换成 ESQL 数据类型,在逻辑消息树中创建的元素是转换过的类型。如果输入消息中的日期时间数据不符合所选模式数据类型的规则,即使该消息在 MRM 域中并且您配置了消息流用来验证输入消息,解析器写入逻辑消息树的值也会被修改。(对于一般 XML 消息不提供验证。)

这对日期时间输入数据的子字段有以下影响:

以下示例演示了这些要点。

输入数据的 XML 模式数据类型 模式规则 位流中的输入值 写入逻辑树的值(括号中的 ESQL 数据类型)
xsd:dateTime CCYY-MM-DDThh:mm:ss 2002-12-31T23:59:59 2002-12-31 23:59:59 (TIMESTAMP)
    --24 1970-01-24 (DATE)
    23:59:59 23:59:59 (TIME)
xsd:date CCYY-MM-DD 2002-12-31 2002-12-31 (DATE)
    2002-12-31T23:59:59 2002-12-31 (DATE)
    -06-24 1970-06-24 (DATE)
xsd:time hh:mm:ss 14:15:16 14:15:16 (TIME)
xsd:gDay ---DD ---24 1970-01-24 (DATE)
xsd:gMonth --MM --12 1970-12-01 (DATE)
xsd:gMonthDay --MM-DD --12-31 1970-12-31 (DATE)
xsd:gYear CCYY 2002 2002-01-01 (DATE)
xsd:gYearMonth CCYY-MM 2002-12 2002-12-01 (DATE)

验证是否缺少子字段

当您考虑使用哪种模式日期时间数据类型时,请记住,如果消息在 MRM 域中,并且您配置了消息流用来验证消息,缺少子字段会导致发生验证异常。

模式数据类型 Gday、gMonth、gMonthDay、gYear 和 gYearMonth 用于记录某些重现时间段。由于这些模式数据类型中使用的重现时间段被 ESQL 作为特定的时间点进行存储,因此打开验证时可能会发生冲突。

例如,当月中 gDay(月中的日)类型的第 24 天写入逻辑树时,缺少的月和年子字段从戳记(1970 年 1 月)提供,以提供特定的日期 1970-01-24。如果编写 ESQL 代码来处理此日期,例如添加 10 天的时间间隔,然后生成验证过的输出消息,则会发生异常。这是因为计算结果是 1970-02-03,由于此日期的月份子字段不再与戳记日期匹配,因此该日期无效。

声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ak01005_