4gl 中的十进制数值日期时间格式

问题描述

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

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

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

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

解决方法

如果值为字符串,这将显示以 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 开始,您有一个本机数据类型,您应该为此目的使用它。这种使用小数和字符串的方法应该只用于向后兼容旧代码和旧数据库模式。