Centura Y2K


Данный документ посвящен решению “проблемы 2000 года” в программных продуктах компании Centura Software

Суть проблемы.

Основой проблемы стало то, что компьютеры и микрочипы, прикладные программы и базы данных продолжают использовать двухзначное обозначение года, и 1-го января 2000 года эти устройства определят 00 не как 2000, а как 1900. Это может вызвать ряд сбоев в работе информационных систем.

Решение.

Во всех программных продуктах компании Centura “проблема 2000 года решена”. Проблемы могут возникнуть только в тех случаях, когда ваши приложения, написанные на SQLWindows или Centura Team Developer, и ваши базы данных, используемые в SQLBase, для хранения и ввода даты используют только последние две цифры. В этом случае сервер баз данных и средства разработки SQLWindows и CTD используют следующий механизм определения века по последним двум цифрам даты и текущего года, который называется ”Centura Century Default Mode”:

Centura Century Default Mode
Последние две цифры даты:
0-49
50-99
Последние две цифры текущего года
0-49* Первые две цифры будут текущего века Первые две цифры будут предыдущего века
50-99** Первые две цифры будут следующего века Первые две цифры будут текущего века
* 1900 - 1949
** 1950 - 1999

Пример:

1. Текущий год - 1996. 2. Текущий год - 2014
Примечание: этот метод вычисления века применяется только в том случае, когда используется двухзначное описание года.

Centura Team Developer

Версия 1.0 Team Developer при вводе даты по умолчанию использует первые две цифры текущего века (см. "Developing with Centura Builder" стр. 7-4).

Для версии 1.1.1 и выше стандартным механизмом определения века является Centura Century Default Mode. Это механизм работает для большинства стандартных ситуаций.

В том случае, когда этот механизм не работает, разработчик должен позаботиться о том, чтобы были введены все четыре цифры года. Такие случаи могут возникать, например, когда требуется указать дату рождения 1948 и в случае использования для ввода только двух последних цифр в начале XXI века, дата будет определена как 2048 год.

Примечание:

В том случае, когда серверу передаются данные в виде строки или текста, SQL конвертация данных будет происходить на стороне сервера. К примеру, в запросе:

SELECT COUNT(*) FROM X WHERE InDate > '01-05-95'

сравнение даты будет производиться сервером, так как это описано ниже в разделе SQLBase. Если вы используете другой сервер отличный от SQLBase, смотрите документацию по проблеме 2000 года соответствующего производителя.

В случае использования переменных типа date и date/time дата будет конвертироваться в четырехзначный вид на стороне клиента, как это было указано выше, прежде чем запрос будет передан серверу для выполнения. Например:

SELECT COUNT(*) FROM X WHERE InDate > :dtQueryRange

SQLWindows

Использование Centura Century Default Mode в SQLWindows идентично в Centura Team Developer. Конфигурирование этого механизма производиться на стороне клиента в файле WIN.INI. Синтаксис описан в документации к PTF. Если этот режим не будет указан в WIN.INI, то SQLWindows для определения первых двух цифр года будет использовать текущий век.

Примечание: Century Default Mode реализован в версии 5.0.4, и в PTFs, начиная с 3 версии для SQLWindows 5.0.3.

Quest

Проблема 2000 года в Quest, начиная с версии 3.0.4 и PTF 3 для версии 3.0.3, решается подобно SQLWindows.

SQLBase

Centura Century Default Mode управляется на стороне сервера и конфигурируется в файле SQL.INI. Данный режим может быть включен или выключен и будет применяться для всех баз данных на сервере. При включенном режиме сервер будет преобразовывать дату только для операций insert и update.

Для включения режима используйте следующею команду в SQL.INI:

CENTURYDEFAULTMODE=1

Если это значение CENTURYDEFAULTMODE установлено в 1, сервер будет использовать Century Default Mode. При значении 0 сервер для определения первых двух цифр года будет использовать текущий век.

Примечание:

  1. Century Default Mode реализован в версии SQLBase 6.1 и выше
  2. Данные, передаваемые серверу как связанные переменные типа date/time, никогда не не изменяются. Для правильной обработки данные такого типа должны правильно формироваться на стороне клиента.
  3. Дефект 58271, исправлен в версиях: 6.1.1, 6.1.0 PTF 4, 6.0.1 PTF 8.
SQLNetwork, SQLHost, SQLGateway

Приложения, написанные на SQLWindows или Centura Team Developer, которые используют SQLNetwork или SQLHost, не требуют специальных изменений и проверки. Эти продукты передают данные между клиентом и сервером без изменений.


Interface Ltd.

Ваши замечания и предложения направляйте по адресу:
webmaster@interface.ru

Reklama.Ru. The Banner Network.