Пока ваша СУБД поддерживает некоторый набор скалярных функций, способных вычислять количество дней между двумя датами и добавлять количество дней к заданной дате, все, что вам нужно сделать, это вычислить какое-то значение нормализации для юлианских дат и сделать некоторые довольно простые математические даты.
В среде DB/2 соответствующими функциями являются: ДНИ и ДАТА. начните с некоторой базовой даты, которую вы знаете по юлианскому календарю. Например, юлианская дата для 01.01.2000: 2451545.
Затем используйте скалярные функции DAYS/DATE для вычисления целочисленного значения той же даты. Запрос для этого в DB/2:
select days(date('2000-01-01'))
from sysibm.sysdummy1
;
Результат этого запроса: 730120
Используйте эти два значения, чтобы вычислить коэффициент нормализации для юлианских дат: 2451545 - 730120 = 1721425
Теперь вы можете вычислить григорианскую дату из юлианской даты следующим образом:
select date(juliandate - 1721425)
from sysibm.sysdummy1
;
Используя примеры из вашего вопроса:
select date(2454522 - 1721425),
date(2454571 - 1721425),
date(2455713 - 1721425)
from sysibm.sysdummy1
;
Возвращает следующие даты: 25 февраля 2008 г. 14 апреля 2008 г. 31 мая 2011 г.
Ваша СУБД может не поддерживать определенные скалярные функции, используемые в приведенном выше примере, однако большинство из них будут поддерживать какой-либо механизм добавления некоторого количества дней к дате по григорианскому календарю и определения количества дней между двумя датами. Вы должны быть в состоянии разработать некоторую работоспособную формулу, используя эти функции и коэффициент нормализации для юлианских дат, как показано выше.
person
NealB
schedule
29.04.2013
@
для обозначения имени переменной, это выглядит как SQLServer. - person   schedule 29.04.2013