У меня есть «Дата рождения» в формате DD-MMM-YY
и «На дату» DD-MM-YYYY
в запросе SQL Server. Я должен определить ВОЗРАСТ человека из приведенных выше данных по состоянию на дату. Я создал немного логики, как показано ниже, чтобы определить возраст. Он отлично работает, когда я запускаю его на сервере оракула.
select
case
when trunc(months_between(TRUNC(TO_DATE('08-05-2019', 'dd-mm-yy')), to_date(CM.MMRBRY, 'DD-mm-YY')) / 12) > 0
then trunc(months_between(TRUNC(TO_DATE('08-05-2019', 'dd-mm-yy')), to_date(CM.MMRBRY, 'DD-mm-YY')) / 12)
else (99 + trunc(months_between(TRUNC(TO_DATE('08-05-2019', 'dd-mm-yy')), to_date(CM.MMRBRY, 'DD-mm-YY')) / 12))
end as AGE
from
LIIL_SA.COMPRLMMR CM
Но мне нужно вызвать этот запрос из SQL Server, используя Open Query. Когда я выполняю это из открытого запроса на SQL Server, используя приведенный ниже код, я получаю сообщение об ошибке.
set @Query = @Query + ' case when trunc(months_between(TRUNC(TO_DATE(''''' + @AsOnDate + ''''',''''dd-mm-yy'''')),to_date(CM.MMRBRY,''''DD-mm-YY''''))/12)>0 then '
set @Query = @Query + ' trunc(months_between(TRUNC(TO_DATE(''''' + @AsOnDate + ''''',''''dd-mm-yy'''')),to_date(CM.MMRBRY,''''DD-mm-YY''''))/12) '
set @Query = @Query + ' else (99+trunc(months_between(TRUNC(TO_DATE(''''' + @AsOnDate + ''''',''''dd-mm-yy'''')),to_date(CM.MMRBRY,''''DD-mm-YY''''))/12)) end as AGE '
Ошибка:
Поставщик OLE DB "OraOLEDB.Oracle" для связанного сервера "ASSURANCE" вернул сообщение "ORA-01861: литерал не соответствует строке формата".
Поставщик OLE DB «OraOLEDB.Oracle» для связанного сервера «ASSURANCE» вернул сообщение «ORA-01861: литерал не соответствует строке формата».
Пожалуйста, помогите мне решить эту проблему или предоставьте другой способ рассчитать правильный ВОЗРАСТ