0

我是 ESQL 新手,正在将 XML 转换为 Cobol 字帖,其中一个 XML 元素是日期,但格式为 yyyymmdd 的字符串,例如 20140908

我还需要从字符串中提取年、月和日的数字

05 orderdate
    10 orderyear    PIC 9(4)
    10 ordermonth   PIC 9(2)
    10 orderday     PIC 9(2)

我可以说如下:

DECLARE Orderdate INTEGER = CAST(INPUTROOT.XMLNS.ORDER.Order_Date as DateTime Format 'yyyymmdd');
SET OUTPUTROOT.DFDL.ORDERDATE.orderYear = EXTRACT(Year from Orderdate);
SET OUTPUTROOT.DFDL.ORDERDATE.orderMonth = EXTRACT(Month from Orderdate);
SET OUTPUTROOT.DFDL.ORDERDATE.orderDay = EXTRACT(Day from Orderdate);

非常感谢

Ĵ

4

1 回答 1

0

下面对我来说现在很好,但当然我们可以为此使用子字符串,这样会更容易一些。

        DECLARE ORDERDATE DATE; 

        DECLARE ORDERYEAR CHARACTER;
        DECLARE ORDERMONTH CHARACTER;
        DECLARE ORDERDAY CHARACTER;

        SET ORDERDATE = CAST(InputRoot.XMLNSC.p:Order.p:Requested_Provision_Date AS DATE Format 'yyyymmdd');

        SET ORDERYEAR = EXTRACT(YEAR FROM ORDERDATE);
        SET ORDERMONTH = EXTRACT(MONTH FROM ORDERDATE);
        SET ORDERDAY = EXTRACT(DAY FROM ORDERDATE);
        SET OutputRoot.DFDL.ORDERS.ORDER_DATE.ORDER_YEAR = CAST(ORDERYEAR AS INTEGER);
        SET OutputRoot.DFDL.ORDERS.ORDER_DATE.ORDER_MONTH = CAST(ORDERMONTH AS INTEGER);
        SET OutputRoot.DFDL.ORDERS.ORDER_DATE.ORDER_DAY = CAST(ORDERDAY AS INTEGER);
于 2014-09-19T05:40:53.773 回答