Переход от datetimeoffset к datetime - PullRequest
0 голосов
/ 26 декабря 2018

Я работаю над изменением запроса, используемого для извлечения данных в пакете служб SSIS.Он состоит из 3 объединений, из которых все предыдущие подзапросы работают нормально, однако последний запрос возвращает ошибку «преобразование типа данных datetimeoffset в тип данных datetime, приведшее к значению вне допустимого диапазона».Я думаю, это может быть связано с полем PolicyExpirationDate, содержащим нули, для политик, срок действия которых еще не истек.Я попытался применить то, что я сделал в других подзапросах союза, но безуспешно.

Вот подзапрос, который возвращает ошибку (вместе с моими закомментированными попытками исправить ошибку):

select DISTINCT
    P.PolicyNumber    
    ,S.RatingPeriod   'RatingPeriodNumber'   
    , 'VES' as 'RatingPeriodSource'     
    ,P.Id 'PcmPolicyId'    
    ,CONVERT(datetime,P.PolicyEffectiveDate) AS PolicyEffectiveDate   
    ,CONVERT(datetime,P.PolicyExpirationDate) AS PolicyExpirationDate   
    --, ISNULL(CONVERT(datetime,P.PolicyExpirationDate),'2030-12-31') AS PolicyExpirationDate   
    --CONVERT(datetime, '2010-07-25T13:50:38.544', 126) AS PolicyExpirationDate    
    --,CONVERT(datetime, P.PolicyExpirationDate, 126) AS PolicyExpirationDate  
    , 'Coverage'  as 'Level'    
    , pcsf.Name 'Factor_Name'    
    , pcsf.value 'Factor_Amount'   
    ,(select max(s2.Id) from PolicyStatus S2 where s.PolicyId = s2.PolicyId and s.RatingPeriod = s2.RatingPeriod)     'PS_PolicyTransID'    
    ,CONVERT(datetime,(select max(s2.EffectiveDate) from PolicyStatus S2 where s.PolicyId = s2.PolicyId and s.RatingPeriod = s2.RatingPeriod)) 'ActivationDate'
from 
    policy p
    inner JOIN     PolicyStatus  s    ON s.PolicyId = P.Id    
    inner join policyschema ps on ps.policyid = p.id         --get schema used on the policy   
    left outer join policyschemacoveragecontainer pscc on pscc.SchemaId = ps.id    --get coverage level factors   
    left outer join policyschemacoverage psc on psc.containerid = pscc.id   
    left outer join policycoverageschemafactor pcsf on pcsf.coverageid = psc.id    and pcsf.IsSelected = 1
where pcsf.Name not like 'Minimum Monthly Premium' 
...