首页 > 解决方案 > 4gl中的十进制数字值日期时间格式

问题描述

该字段的值采用 (deci-5 99999999.99999) 格式,例如:20201231.65624,其中 2020 是年,12 是月,31 是日期,0.65624 是小时和分钟值。

我想像31/12/2020 18:13那样显示它。

我的意思是 DD/MM/YY hh:mm 像这种格式。到目前为止,我只能显示日期部分,即 2020 年 12 月 31 日。但无法显示小时和分钟部分。

感谢在这方面的帮助。谢谢。

标签: openedgeprogress-4gl4gl

解决方案


如果值是字符串,这将在 hh:mm:ss 中显示时间部分:

display string( integer ( entry( 2, "20201231.65624", "." )), "hh:mm:ss" ).

或者,如果该值为小数:

define variable d as decimal no-undo initial 20201231.65624.

display string( integer(( d - truncate( d, 0 )) * 100000 ), "hh:mm:ss" ).

显然,您希望抽象该方法以适应您的实际需求。

使用字符或十进制字段来保存日期时间的技术是不支持 DATETIME 或 DATETIME-TZ 数据类型的古代 Progress 版本的遗留技术。从 OpenEdge 10 开始,您拥有一个应用于该目的的本机数据类型。这种使用小数和字符串的方法实际上应该只用于向后兼容旧代码和旧数据库模式。


推荐阅读