how can query min date of descendants in xml field. this:
declare @xml xml =' <plan> <effectivedate>2006-01-01</effectivedate> <effectivedate>2016-09-14</effectivedate> <effectivedate>2016-09-14</effectivedate> <effectivedate>2016-09-14</effectivedate> </plan>' select @xml.value('min(descendant::effectivedate)','varchar(max)') mindate ,@xml.value('count(descendant::effectivedate)','varchar(max)') countdate
unfortunately above returns null min
the default datatype untyped xml node values xdt:untypedatomic
. min function (xquery) try convert xdt:untypedatomic
values xs:double
, return min value. values can not converted xs:double
min()
return min value of 4 null
values.
since min()
works fine on xs:date
can first convert values xs:date
, min()
on date values.
declare @xml xml = ' <plan> <effectivedate>2006-01-01</effectivedate> <effectivedate>2016-09-14</effectivedate> <effectivedate>2016-09-14</effectivedate> <effectivedate>2016-09-14</effectivedate> </plan>'; select @xml.value('min(for $n in descendant::effectivedate/text() return $n cast xs:date?)', 'date'), @xml.value('count(descendant::effectivedate)', 'int');
Comments
Post a Comment