Я работаю над изменением запроса, используемого для извлечения данных в пакете служб 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'