datetime datatype converts implicitly to nvarchar. You shouldn't need to CAST or CONVERT to compare a datetime field, and is probably going to cause more problems then it's worth. By comparing a string containing a date/time to a datetime field, the string is converted implicitly to datetime and compared (this allows you to do greater-than, greater-than-or-equal-to, less-than, etc comparisons). But if you convert the datetime field to a string, then your "=" is doing a string level comparison, not a datetime level comparison. So a string level comparison of "2004-03-05" is different than "3/5/2004". But a datetime level comparison "2004-03-05" is equivilant to "3/5/2004".