what database server evaluates now() per row?
now() should be STABLE in pretty much every db, but not every db gracefully handles STABLE function calls in predicates.
You probably know all this but figured I'd share the database jargon for everyone else.
I checked the documentation and it says now() is evaluated at most once per request.
The point was now() and friends prevents optimization on the server we use, because they're not treated as constants.
If you use a constant or set a @variable ahead of time, it will use the filtered index, but if you just use =now() equivalent
(or in SQL server GETDATE()) it will not. (You may also need to use OPTION(Recompile))