已知:给定了年,月,日。求转化成*MDY/*YMD等的最快方法
本帖最后由 first_come 于 2010-08-25 14:44 编辑
例如:给定了year---2000,month--12,day--12。(numeric)
如何用最快的方法将其转化为*MDY。下面是我自己的做法(个人感觉很麻烦):
D CVT_DATE S D DATFMT(*USA)
D TEMP_DATE S D DATFMT(*MDY)
D MDY DS
D MONTH 1 2 0
D DAY 3 4 0
D YEAR 5 8 0
*USA0 MOVE MDY CVT_DATE
MOVE CVT_DATE TEMP_DATE
MOVE TEMP_DATE RSLT_DATE
有什么更快的方法么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
看看{:3_191:}
D YMD DS
D YY1 1 4 0
D MM1 5 6 0
D DD1 7 8 0
D MDY DS
D MM2 1 2 0
D DD2 3 4 0
D YY2 5 8 0
在YY1/YY2,MM1/MM2,DD1/DD2之间进行赋值就可以转化了...
case 1.数字日期间转化:%int(20001231/10000)+ %rem(20001231:10000)*10000
case 2.字符日期间转化:%subst
case 3.日期类型间转化:直接MOVE ,系统会自动转。
ddatusa s d datfmt(*usa)
d inz(*sys)
ddatiso s d datfmt(*iso)
c move datusa datiso
本帖最后由 first_come 于 2010-08-25 14:56 编辑
谢谢.
这里如果是YYYYMMDD---MMDDYYYY,我直接用:
D MMDDYYYY S D DATFMT(*USA)
C *ISO0 MOVE YYYYMMDD MMDDYYYY
我要求的转换是YYYYMMDD----MMDDYY啊.用数学计算恐怕不好吧,需要truncate啊,如果月份是1~9,还要麻烦点.
有没更好的建议啊.
%int(20001231/10000)+ %rem(20001231:10000)*10000
最简单的方法可以使用计算法
你有一个20001231 yyyymmdd---->mmddyyyy
20001231 * 10000.0001 = 12312000