@cheekybuddha if start date is 1st Jan and end date is 31st Jan and you have a record with a date, but no time of 20th Jan - how is that being excluded?
Depending on the amount of records, you may find this is not so fast, since the condition is no longer sargable and the db engine won't be able to take advantage of using an index on that field.
don't think it needs to - the index will have been applied to the scandate field to limit the returned records to those between start and end dates - so this is just an additional criteria - my example was not intended to be the whole criteria, just to illustrate you don't need the <>0 which cuts out another operation.