EAS:用脚本怎样获取年、月、日原创
金蝶云社区-HN_刘敏
HN_刘敏
51人赞赏了该文章 184次浏览 未经作者许可,禁止转载编辑于2024年12月13日 09:37:15

首编于:2024年12月3日

关键字:日期、日期格式、日期的年月日

前言:

本文主要探讨了日期格式处理这一典型问题。例如在处理日期格式相关问题时,在将包含年月日时分秒的日期格式转换为仅含单独的年、月、日、或含年月日格式时,通过实践发现常规方法如to_datesubstring等在 EAS 查询分析器中无法满足需求。进而提出了一种有效的解决方案,即分别获取年、月、日部分并进行拼接,其中年和月可直接使用yearmonth函数获取,日部分由于day函数报错,采用left(left(fcreatetime,10),2)的方式代替。   


补充:有些版本直接用这种方式可以成功获取: TO_CHAR(fbizdate,'YYYY-MM-DD') 


问题说明:

比如一个日期格式的值为2018-11-15 10:40:51  ,我要得到2018-11-15,在我们的EAS查询分析器中,发现用to_date(fcreatetime,'yyyy-mm-dd') 或者 substring(fcreatetime,0,10) 等都得不到我们想要的格式,如下图:


原字段数据类型:

image.png


原字段值:

image.png


substring(fcreatetime,0,10)取出来的效果:


image.png

用left的效果与substring 一样:同样不是我们需要的格式

image.png


解决方案:用单独取年、月、日的方式再拼接起来

image.png


这里用year (日期字段名)和month(日期字段名)函数可以直接取出来年和月的部份, 但是日的部份用day函数报错,所以用 left(left(fcreatetime,10),2) 代替 


 

参考脚本:

select top 1  year(fcreatetime) ||'-'|| month(fcreatetime)||'-'||left(left(fcreatetime,10),2) from t_sd_saleorder


附:BOS二开案例及常见问题的解决方合集:https://vip.kingdee.com/link/s/lnEvP

图标赞 51
51人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!