If you are using SQL Server 2005+, you could try using something like
DECLARE @StartDate DATETIME = '01 Jan 2013',
@EndDate DATETIME = '31 Jan 2013'
;With Dates AS (
SELECT @StartDate RunDate
UNION ALL
SELECT RunDate + 1
FROM Dates
WHERE RunDate + 1 <= @EndDate
)
SELECT *
FROM Dates d LEFT JOIN
YourTable yt ON d.RunDate = yt.YourDate
WHERE yt.YourDate IS NULL
OPTION (MaxRecursion 0)
In this query, we are using a recursive CTE to generate the date series (the OPTION (MaxRecursion 0)
is to ensure that you do not receive a recursive error), then we are joining to the table in question, and only returning values that are missing from that table.