SELECT ...,
CASE
WHEN CAST(Foo.Date AS DATE) = '01.01.1900' THEN ''
ELSE CAST(Foo.Date AS VARCHAR(25))
END AS Date
FROM BAR, ...
Поскольку ваше поле DATETIME, это значение всегда будет содержать часть TIME и будет равно только точной дате, если это временная часть - 0:00 (полночь). Отбрасывая его в DATE, вы удалите часть времени, и вы сможете сравнить ее.
Также возвращение '' и дата в том же CASE неявно преобразуют вашу пустую строку в дату - это 01.01.1900 снова, поэтому вам нужно преобразовать дату в varchar в другую часть CASE или вернуть NULL вместо ' как в примерах Адама Плочера.
Итак, Foo.Date - это поле DateTime? –
Используйте 'WHEN '01 .01.1900 'THEN NULL'. – Rachcha
Это DateTime, да. – mosquito87