Select row from non-empty node value in xml column using xml query
I have inferred some XML structure from your query but it is best if you supply some sample XML.  Does this work for you?

SELECT *
FROM dbo.Tasks 
WHERE [Work details].exist('Root/Row/Completedon/text()') = 1


My full repro script:

CREATE TABLE dbo.Tasks
(
    taskId          INT IDENTITY PRIMARY KEY,
    [Work details]  XML
)
GO


INSERT INTO dbo.Tasks ( [Work details] )
VALUES ( '&lt;Root&gt;
    &lt;Row&gt;
        &lt;Completedon&gt;01/04/2016&lt;/Completedon&gt;
    &lt;/Row&gt;
&lt;/Root&gt;' ),
( '&lt;Root&gt;
    &lt;Row&gt;
        &lt;Completedon&gt;&lt;/Completedon&gt;
    &lt;/Row&gt;
&lt;/Root&gt;' )
,
( '&lt;Root&gt;
    &lt;Row&gt;
        &lt;Completedon/&gt;
    &lt;/Row&gt;
&lt;/Root&gt;' )


GO


-- Original query; returns all records
SELECT [Tasks].* 
FROM dbo.[Tasks] 
WHERE ( [Work details].exist('for $x in /Root/Row where  ( (empty(xs:date($x/Completedon[1])) or ($x/Completedon[1])="")  )  return $x')&gt;0 )


-- Revised query
SELECT *
FROM dbo.Tasks 
WHERE [Work details].exist('Root/Row/Completedon/text()') = 1


And test results: