免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2324 | 回复: 4
打印 上一主题 下一主题

請教AS400里時間比較問題 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-06 08:17 |只看该作者 |倒序浏览
各位大哥:
      
         小弟開發中遇到一個需求,需要將兩個TIME值比較,計算出其中的時間間隔,時間格式是類似"15441520080804"這樣的數值型的數字,表示"時分秒年月日",現需將兩個這樣格式的數據相比較,計算出中間相差了多少天多少小時多少分鐘。網上搜索了一下關于日期比較的函數,看到了%diff這個函數,但是好像不能實現這樣的需求,請問這樣的需求怎么實現呢?需要將日期切開并分別調用%diff來實現么?或者有更好的辦法?

论坛徽章:
0
2 [报告]
发表于 2008-08-06 09:26 |只看该作者
你可以你要的时间变成timestamp类型的,然后在用%DIFF。

论坛徽章:
0
3 [报告]
发表于 2008-08-06 10:19 |只看该作者
如:

  1. H DATFMT(*ISO) TIMFMT(*ISO)                                             
  2. D STR_STP         S               Z                                    
  3. D END_STP         S               Z                                    
  4. D DAY             S              8P 0                                   
  5. D HOUR            S              8P 0                                   
  6. D MIN             S              8P 0                                   
  7. D                 DS                                                   
  8. DSTR                            26    INZ('0000-00-00-00.00.00.000000')
  9. D STR_DATE                1     10                                      
  10. D STR_TIME               12     19                                      
  11. D                 DS                                                   
  12. D*                                                                     
  13. DEND                            26    INZ('0000-00-00-00.00.00.000000')
  14. D END_DATE                1     10                                      
  15. D END_TIME               12     19                                      
  16. D*                                                                     
  17. C                   EVAL      STR_DATE='2008-08-01'                  
  18. C                   EVAL      STR_TIME='10.10.10'                    
  19. C                   EVAL      STR_STP = %timestamp(STR)              
  20. C                   EVAL      END_DATE='2008-08-08'                  
  21. C                   EVAL      END_TIME='12.12.12'                    
  22. C                   EVAL      END_STP = %timestamp(END)              
  23. C                   EVAL      DAY=%DIFF(END_STP:STR_STP:*DAYS)      
  24. C                   EVAL      HOUR=%DIFF(END_STP:STR_STP:*HOURS)     
  25. C                   EVAL      MIN=%DIFF(END_STP:STR_STP:*MINUTES)   
  26. C     STR_STP       DSPLY                                            
  27. C     END_STP       DSPLY                                            
  28. C     DAY           DSPLY                                            
  29. C     HOUR          DSPLY                                            
  30. C     MIN           DSPLY                                            
  31. C                   SETON                                        LR  
  32. C                   RETURN                                          
复制代码

论坛徽章:
0
4 [报告]
发表于 2008-08-06 10:34 |只看该作者
可以用%char把date和time转化后再用如:

  1. H DATFMT(*ISO) TIMFMT(*ISO)                                             
  2. D STR_STP         S               Z                                    
  3. D END_STP         S               Z                                    
  4. D DAY             S              8P 0                                   
  5. D HOUR            S              8P 0                                   
  6. D MIN             S              8P 0                                   
  7. D                 DS                                                   
  8. DSTR                            26    INZ('0000-00-00-00.00.00.000000')
  9. D STR_DATE                1     10                                      
  10. D STR_TIME               12     19                                      
  11. D                 DS                                                   
  12. D*                                                                     
  13. DEND                            26    INZ('0000-00-00-00.00.00.000000')
  14. D END_DATE                1     10                                      
  15. D END_TIME               12     19                                      
  16. D*                                                                     
  17. D E_DATE          S               D                                 
  18. D E_TIME          S               T                                 
  19. D*                                                                  
  20. C                   EVAL      STR_DATE='2008-08-01'                 
  21. C                   EVAL      STR_TIME='10.10.10'                  
  22. C                   EVAL      STR_STP = %timestamp(STR)            
  23. C                   TIME                    E_DATE                  
  24. C                   TIME                    E_TIME                  
  25. C                   EVAL      END_DATE=%CHAR(E_DATE)               
  26. C                   EVAL      END_TIME=%CHAR(E_TIME)               
  27. C                   EVAL      END_STP = %timestamp(END)            
  28. C                   EVAL      DAY=%DIFF(END_STP:STR_STP:*DAYS)      
  29. C                   EVAL      HOUR=%DIFF(END_STP:STR_STP:*HOURS)   
  30. C                   EVAL      MIN=%DIFF(END_STP:STR_STP:*MINUTES)   
  31. C     STR_STP       DSPLY                                          
  32. C     END_STP       DSPLY                                          
  33. C     DAY           DSPLY                                          
  34. C     HOUR          DSPLY                                             
  35. C     MIN           DSPLY                                             
  36. C                   SETON                                        LR   
  37. C                   RETURN                                            
复制代码

论坛徽章:
0
5 [报告]
发表于 2008-08-06 11:21 |只看该作者
非常感謝!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP