【问题标题】:decimal number valued datetime formatting in 4gl4gl中的十进制数字值日期时间格式
【发布时间】:2021-04-08 00:30:11
【问题描述】:
该字段的值采用 (deci-5 99999999.99999) 格式,例如:
20201231.65624
其中 2020 是年,12 是月,31 是日期,0.65624 是小时和分钟值。
我想像 31/12/2020 18:13 那样显示它。
我的意思是像这种格式的 DD/MM/YY hh:mm。到目前为止,我只能显示日期部分,即 31/12/2020。但无法显示小时和分钟部分。
感谢您在这方面的帮助。谢谢。
【问题讨论】:
标签:
openedge
progress-4gl
4gl
【解决方案1】:
如果值是字符串,这将在 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 开始,您拥有一个应用于该目的的本机数据类型。这种使用小数和字符串的方法实际上应该只用于向后兼容旧代码和旧数据库模式。