Как определить возраст на определенную дату в запросе SQL Server - PullRequest
0 голосов
/ 08 мая 2019

У меня есть «Дата рождения» в формате 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: литерал не соответствует строке формата».

Пожалуйста, помогите мне решить эту проблему или предоставьте другой способ рассчитать правильный ВОЗРАСТ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...