我在SQL Server查询中具有DD-MMM-YY
格式的“出生日期”和“日期截止” DD-MM-YYYY
格式。我必须根据“截至日期”的上述数据确定人员的年龄。我创建了以下逻辑以确定年龄。当我在oracle服务器上运行它时,它工作正常。
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
但是我需要使用Open Query从SQL Server调用此查询。当我使用下面的代码在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 '
错误是:
链接服务器“ ASSURANCE”的OLE DB提供程序“ OraOLEDB.Oracle”返回消息“ ORA-01861:文字与格式字符串不匹配”。
链接服务器“ ASSURANCE”的OLE DB提供程序“ OraOLEDB.Oracle”返回消息“ ORA-01861:文字与格式字符串不匹配。”
请帮助我解决此问题或提供其他方法来计算正确的年龄