FMT D DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++
*************** Beginning of data ***************
0001.00 D n1 S 7p 0
0002.00 D d1 S D
0003.00 *
0004.00 /free
0005.00 Eval n1=1130709;
0006.00 Eval d1=%date((n1-1000000):*YMD);
0007.00 Dsply %char(d1);
0008.00 Eval *inlr=*on;
0009.00 Return;
0010.00 /end-free
****************** End of data ******************
display结果: 2013-07-09
2013-07-09
导出到excel后不知道是什么样子... 试试(2013-7-17 10:53:29 )
DDS定义:
FMT PF .....A..........T.Name++++++RLen++TDpB....
*************** Beginning of data ********
0001.00 A R REC1
0002.00 A FLDN1 7S 0
0003.00 A FLDD1 L
0004.00 A FLDT1 T
0005.00 A FLDST Z
****************** End of data ***********
runqry看到的
Line ....+....1....+....2....+....3....+....4....+....5....+....6
FLDN1 FLDD1 FLDT1 FLDST
000001 1,120,304 2013-01-02 09.12.33 2013-03-07-00.00.00.000000
****** ******** End of report ********
导出到excel看到的
FLDN1
|
FLDD1
|
FLDT1
|
FLDST
|
1120304
|
01/02/13
|
09:12:33
|
2013-03-07-00.00.00.000000
|
-----------------------------------------------------------------------------------------
日期类型在定义时格式如下
FMT D DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords++++
*************** Beginning of data ****************
0001.00 DD1 S D datfmt(*YMD)
0002.00 DD2 S D datfmt(*MDY)
年份用2位表示:
*MDY(mm/dd/yy)
*DMY(dd/mm/yy)
*YMD(yy/mm/dd)
年份用4位表示:
*ISO(yyyy-mm-dd)
*EUR(dd.mm.yyyy)
*USA(mm/dd/yyyy)
其他:
*JUL(yy/ddd)
*JIS(yyyy-mm-dd)
在这个固定格式后面加上数字0 (例如*MDY0) 则表示表达式中不包含分隔符 (.或者/).
A zero(0) specified at the end of a format (for example *MDY0) indicates that the character field does not contain separators.
下面再看日期转换函数 %date
%date(expression {:date-format})
这里的expression不能是数字, 可以是用单引号引起的字符串. date-format不加0时表达式必须含有分隔符, date-formate含0时表达式不能含分隔符.
上面是字符串转换为date类型的方法.
如果是数字型变量想直接转换为date类型, 在%date的第一个参数处用%char(数字)来代替即可.
RPG code 如下:
FMT D DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords++++
*************** Beginning of data ****************
0001.00 DD1 S D datfmt(*YMD)
0002.00 DD2 S D datfmt(*MDY)
0003.00
0004.00 /free
0005.00
0006.00 Eval D1=%date(%CHAR(130911):*YMD0);
0007.00 Dsply ('D1='+%char(D1));
0008.00
0009.00 Eval D2=%date('11/03/13':*DMY);
0010.00 Dsply ('D2='+%char(D2));
0011.00
0012.00 Eval D2=D1;
0013.00 Dsply ('D2=D1='+%char(D2));
0014.00
0015.00 Eval *inlr=*on;
0016.00 Return;
0017.00 /end-free
****************** End of data *******************
结果如下:
Display Program Messages
Job 027915/CUSERJ/QPADEV008B started on 09/11/13 at 16:30:40 in subsystem QI
DSPLY D1=13/09/11
DSPLY D2=03/11/13
DSPLY D2=D1=09/11/13
阅读(1078) | 评论(0) | 转发(0) |