"Скользящее окно века" в Firebird

"Скользящее окно века" в Firebird

Независимо от того, как представлена часть года в литерале DATE или TIMESTAMP, в виде CCYY или YY, Firebird всегда сохраняет полное значение года. Он обращается к алгоритму получения части cc (столетие). Он также всегда включает столетие при поиске типов даты. Клиентские приложения отвечают за отображение года в виде двух или четырех цифр.

Для получения столетия Firebird использует алгоритм скользящего окна. Задача заключается в интерпретации двухсимвольного значения года как ближайшего к текущему году в интервале предшествующих и последующих 50 лет.

Например, если текущий год 2004, то двухсимвольные значения года будут интерпретироваться, как показано в табл. 10.3.

Таблица 10.3. Определение года по двухсимвольному виду, если текущим является 2004 год

Двухсимвольный год

Полученный год

Рассчитывается как

98

1998

(2004 - 1998 = 6) < (2998 - 2004 = 94)

00

2000

(2004 - 2000 = 4) < (2100 - 2004 = 96)

45

2045

(2004 - 1945 = 55) > (2045 - 2004 = 41)

50

2050

(2004 - 1950 = 54) > (2050 - 2004 = 46)

54

1954

(2004 - 1954 = 50) = (2054 - 2004 = 50)*

55

1955

(2004 - 1955 = 49) < (2055 - 2004 = 51)

* Кажущееся равенство в этом сравнении может ввести в заблуждение. 1954 год ближе к 2004, чем 2054, потому что все даты между 1954 и 1955 годами ближе к 2004, чем все даты между 2054 и 2055 годами.