ГОСТ Р HCO/HL7 27951— 2016
В.3.8 Тип данных интервала времени IVL<TS> (специализация типа данных IVL)
Определение: множество последовательных значений штампов даты и времени.
Общий тип данных интервала позволяет также определить интервалы моментов времени. Однако для этих
интервалов итлеются определенные особенности литеральных представлений и преобразования, описанные в на
стоящем подразделе.
type In te rva K T S * a lia s IVL<TS> \
ST;
IVLcTS* (TS x j;
lit e r a l
prom otion
t;
B.3.8.1 Преобразование моментов времени в интервалы: IVL<TS> (унаследовано от типа данных IVL)
Значение типа TS может быть преобразовано в интервал типа IVL<TS>, у которого нижняя граница представ
ляет собой само это значение, а свойство ширины width выводится из точности значения типа TS и длительности
наименее значащего календарного периода, указанного в этом значении. Верхняя граница интервала открыта. На
пример. литерал «200009» значения типа TS преобразуется в интервал типа IVL<TS> с нижней границей 200009 и
шириной 30 дней, что эквивалентно интервалу «[200009;200010[».
В.3.8.2 Литеральная форма
Литеральная форма интервала моментов времени является исключительной:
- форма с дефисом не разрешена для интервалов моментов времени;
- вместо нее используется «форма оболочки».
Чтобы избежать синтаксических конфликтов с часовой зоной и несколько отличающихся профилей, предусмо
тренных в стандарте ИСО 8601 и используемых в некоторых платформах реализуемых технологий, форма сдефисом
для значений типа IVL<TS> не разрешена. Предпочтительной является форма интервала с квадратными скобками.
П р и м е р— Литералом интервала от 20:00 до 21:40 12 мая 1987 г. служит стропа
«[198705122000:198705122130]».
П ри м ечание — Точность границы интервала несущественна для самого интервала. Можно было бы
ошибочно предположить, что интервал «(19870901 ;19870930]» охватывает весь сентябрь 1987 г. вплоть до завер
шения суток 30 сентября. Однако это не так. Правильный способ задания полного календарного цикла (например,
час. день, месяц, год и т. д.) состоит в использовании нотации с открытой верхней границей. Например, весь сен
тябрь 1987 г. может быть задан литералом «[198709:198710[»Ч
«Форма оболочки» литерала определяется как выпуклая оболочка (см. В.3.6.10 «Свойство hul: IVL<T> (унас
ледовано от типа данных SET)») интервалов, полученных в результате преобразования двух значений моментов
времени в интервалы.
1VL<TS* h u ll ; TS TS < 5 .e q u a l( ( (TVL<TS>>$1)
. h u ll( (IVL<TS>>$3)»;
Например, строка «19870901..19870930» является допустимым литералом в «форме оболочки». Она экви
валентна форме интервала «[19870901;19871001[»2*.
Форма оболочки позволяет сокращение, при котором в литерале верхней границы не требуется повторять
левые цифры, одинаковые с литералом нижней границы. Два литерала моментов времени выравниваются вправо и
недостающие левые цифры копируются из литерала нижней границы в литерал верхней. Эта простая строковая
операция здесь формально не определяется.
Например, интервал с 12 мая 1987 по 23 мая 1987 г. может быть записан как «19870512..23». Однако интер
вал с 12 мая 1987 г. по 2 июня 1987 г. должен быть записан как «19870512..0602». а не «20000512..02».
В.4 Параметризованные расширения типов данных
Параметризованные расширения типов данных представляют собой параметризованные типы данных, у ко торых
в качестве параметра используется один тип данных и которые расширяют (специализируют) этот параметр.
Может возникнуть впечатление, что это утверждение противоречит правилу преобразования значения
типа TS в интервал типа IVL<TS>. Однако никакого противоречия нет. Точность границы значения не имеет, но
точность отдельного момента времени (в отличие от границы интервала) существенна, когда момент времени
пре образуется в интервал.
2) Форма оболочки может показаться излишней для представления простого интервала. Однако она стано
вится важной для нотации периодических интервалов, поскольку сокращает запись и (хотя это и может быть спор
ным)делает запись более сложных структур периодов времени более интуитивной.
397