已知:给定了年,月,日。求转化成*MDY/*YMD等的最快方法

发布于 2022-08-27 19:36:57 字数 1290 浏览 10 评论 6

本帖最后由 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

春风十里 2022-09-09 05:27:11

看看{:3_191:}

轻拂→两袖风尘 2022-09-07 18:04:13

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之间进行赋值就可以转化了...

相权↑美人 2022-09-06 08:51:49

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

情魔剑神 2022-09-05 19:24:47

本帖最后由 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,还要麻烦点.
有没更好的建议啊.

小猫一只 2022-09-02 15:59:47

%int(20001231/10000)+ %rem(20001231:10000)*10000

耀眼的星火 2022-08-28 15:03:42

最简单的方法可以使用计算法

你有一个20001231 yyyymmdd---->mmddyyyy

20001231 * 10000.0001 = 12312000

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文