Since there's only one <BSDL>
node - your call to //BSDL
selects that single node and then item.value('(dateTime)[1]', 'datetime')
returns the first <dateTime>
child.
You need to change your XQuery to (use that xmlns=....
namespace you mention in your sample here):
;WITH XMLNAMESPACES('.....' as ns)
SELECT
item.value('.', 'datetime')
from
dbo.MyTable
CROSS APPLY
MyColumn.nodes ('/ns:BSDL/ns:dateTime') BSDL(item)
You need to get a list of all <dateTime>
nodes under <BSDL>
- then you'll get all of them and you can inspect them one by one.