Here I have created script that will help you out.
SQL
DECLARE @temp AS TABLE(ID INT IDENTITY(1,1),Name VARCHAR(20),Document XML)
INSERT INTO @temp VALUES
('David','<Document><Fields><Date>1/1/2015</Date><ClientID>25</ClientID><Desc>Desc 30 </Desc><Topics><topic><title>topic title1</title><details>topic details 1</details></topic><topic><title>topic title2</title><details>topic details 1</details></topic></Topics></Fields></Document>'),
('Jhon','<Document><Fields><Date>1/2/2015</Date><ClientID>50</ClientID><Desc>Desc 25 </Desc><Topics><topic><title>topic title1</title><details>topic details 1</details></topic><topic><title>topic title2</title><details>topic details 2</details></topic></Topics></Fields></Document>'),
('Kevin','<Document><Fields><Date>1/5/2015</Date><ClientID>55</ClientID><Desc>Desc 55 </Desc><Topics><topic><title>topic title1</title><details>topic details 1</details></topic><topic><title>topic title2</title><details>topic details 3</details></topic></Topics></Fields></Document>')
DECLARE @FromDate DATETIME
DECLARE @ToDate DATETIME
DECLARE @Id INT
DECLARE @MaxClientID INT
SET @FromDate = '1/1/2014'
SET @ToDate = '2/2/2015'
SET @Id = 3
SET @MaxClientID = 50
SELECT * FROM @temp
WHERE CAST([Document].value('(/Document//Date/node())[1]', 'nvarchar(max)') AS DATETIME) BETWEEN @FromDate AND @ToDate
AND ID = @Id
AND CAST([Document].value('(/Document//ClientID/node())[1]', 'nvarchar(max)') AS INT) > 50
Screenshot
