SQL Server query with date range in WHERE - execution plan uses clustered PK instance not date column index
What is the datatype of itemTimestamp? Is that column indexed? Is the column nullable?

Assuming the answers are datetime, Yes, and No respectively you might consider

WHERE  a.itemTimestamp &gt;= isnull(@timestamp_start, '17530101')
       AND a.itemTimestamp &lt; isnull(@timestamp_end, '99991231') 


If you were to change to datetime2 and actually store dates before 1753 you would need to change the lower bound condition to 00010101. This also won't bring back dates matching the higher bound of 9999-12-31 - but in the real world this is unlikely to cause a problem.