форматирование даты и времени с десятичным числом в 4gl

Значение поля имеет формат (deci-5 99999999.99999), например: 20201231.65624, где 2020 — год, 12 — месяц, 31 — дата, а 0,65624 — значение часов и минут.

Я хочу отобразить его как 31/12/2020 18:13.

Я имею в виду ДД/ММ/ГГ чч:мм, как в этом формате. Пока я могу отображать только часть даты, то есть 31/12/2020. Но не может отображать часовую и минутную часть.

Благодарим за помощь в этом отношении. Спасибо.


person Rafailo    schedule 31.12.2020    source источник


Ответы (1)


Это отобразит часть времени в формате чч:мм:сс, если значение является строкой:

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" ).

Очевидно, вы захотите абстрагировать этот подход, чтобы он соответствовал вашим реальным потребностям.

Метод использования символьного или десятичного поля для хранения даты и времени является наследием древних версий Progress, которые не поддерживали тип данных DATETIME или DATETIME-TZ. Начиная с OpenEdge 10 у вас есть собственный тип данных, который вы должны использовать для этой цели. Такой подход с десятичными знаками и строками действительно следует использовать только для обратной совместимости со старым кодом и старыми схемами базы данных.

person Tom Bascom    schedule 31.12.2020