Almost always problems related to dates are because the date column in the database table is not declared as DATE or DATETIME data type and/or the parameter passed to the SQL Select is not declared as DATE or DATETIME data type. I suspect that either the database column containing the date and/or the @date parameter are not of DATE data type. That is the cause of your problem. If a DATETIME data type is used and you only use dates and not times, then time part of the DATETIME value will be zero.
If you always follow the best practice of using DATE or DATETIME data type to store dates and always using DATE or DATETIME data type parameters to pass dates, you will greatly reduce problems using dates.
See
DateTime data type[
^]
See
Configuring Parameters and Parameter Data Types[
^] DateTime type