Ich habe einige Daten in einer SQL-Tabelle mit einer XML-Datentypspalte, in der ich eine Liste von Elementen zurückgeben muss, die in einen Datumsbereich fallen. Die Daten sieht wie folgt aus:Auswählen von SQL XML-Elementen zwischen Daten
Ordner Tabelle - TBLfolder: id - GUID ClientId = GUID CreatedDate: Datetime Inhalt: xml
die Inhalte xml eine Struktur hat, wie:
<Contents>
<Files>
<File id="SOMEGUID">
<StartDate>2001-11-07</StartDate>
<EndDate>2062-11-14</EndDate>
<Type code="jpeg">JPEG</Type>
<Valid>true</Valid>
</File>
<File id="SOMEGUID">
<StartDate>2012-09-01</StartDate>
<EndDate>2065-11-14</EndDate>
<Type code="jpeg">JPEG</Type>
<Valid>true</Valid>
</File>
Files etc......
</Files>
</Contents>
Ich schreibe dies in einer gespeicherten Prozedur, wo ich eine Client-GUID und ein Start-und Enddatum übergeben Ich bin nach einer Xml-Spalte mit allen Dateien, die zwischen dem Datumsbereich aus dem letzten Ordner-Datensatz fallen:
Hier ist, was ich bisher habe:
Select top 1 folder.contents.query('Contents/File/File
from TBLFolder
where clientID = @clientId
order by CreatedDate desc
For XML PATH ('Files')
Was ist der beste Weg, um die Dateien Knoten in der XML, um nur Dateien zu filtern, die zwischen der Start- und Zielparameter fallen? Ich bin neu in XML in SQL so unsicher über die beste Möglichkeit, dies anzugehen.
Ich habe versucht, eine FLOWER-Anweisung und Prädikate auf meine Abfrage, aber Probleme mit der Datetime und Konvertierungen Ich habe auch bekommen p1: p2: Präfixe auf meine Elemente angezeigt.
der Ausgang I nachdem es bin:
<Files>
<File id="SOMEGUID">
<StartDate>2001-11-07</StartDate>
<EndDate>2062-11-14</EndDate>
<Type code="jpeg">JPEG</Type>
<Valid>true</Valid>
</File>
<File id="SOMEGUID">
<StartDate>2012-09-01</StartDate>
<EndDate>2065-11-14</EndDate>
<Type code="jpeg">JPEG</Type>
<Valid>true</Valid>
</File>
Files etc......
</Files>
Welches Element ist mit diesem in der where-Klausel? das StartDate oder das EndDate? – keeney
@keeeny Woops Blick auf meine Bearbeitung. –