What data type is c.Received_Date?
If it is not datetime, then the column will be converted to datetime, because @ BeginDate / @ EndDate is the date and time. This is called data type priority . This includes if the column is smalldatetime (by reference), since datetime has almost the highest priority.
With constants, the optimizer will use the column data type
Conversion means that the pointer that is the cause cannot be used in the plan.
Edit after viewing query plans
For literals, SQL Server decided that a search followed by a bookmark search is best because the values ββare literals.
As a rule, search by road bookmarks (and by the way, one of the reasons why we use coverage indexes) for more than a few lines.
For a query using variables, he adopted the general case, because if the values ββchange, he can reuse the plan. In general, avoid bookmark searches, in which case you scan PK (clustered index)
Learn more about why bookmark searches usually don't work well on Simple-talk.
In this case, you can try the index pointer to force it, but if the range is too wide, it will be very slow. or you can remove SELECT * (in any case, bad practice) and replace with SELECT col1, col2 etc and use the coverage index