Votre exemple est invalide de deux manières :
- Il n'est pas autorisé d'avoir un préfixe d'espace de noms sans déclaration d'espace de noms correspondante.
- Votre clôture les balises n'incluent pas le
/
partout...
C'est un vilain hack, mais vous pouvez essayer ceci :
DECLARE @Params XML
SET @Params = REPLACE('<filter>
<ns0:from>2016-09-19</ns0:from>
<ns0:to>2017-01-01</ns0:to>
</filter>','ns0:','');
SELECT @Params.value('(/*:filter/*:from)[1]', 'date') AS [from];
Si vous ne connaissez pas tous les préfixes d'espace de noms à l'avance, cela deviendra très délicat...