CurrentDate() is an implied Date/Time object. You are getting information from the currentdate because there are transactions that have already happened. You will have to generically truncate the current date to filter correctly.
because CurrentDate() is a date/timestamp. Typically used for displaying report timestamp information in a report. Your other option is to build a filter in the data provider and base it off a database timestamp (pre-process vs. post-process).
as said, currentdate is a date/timestamp.
example, currentdate() gives me now 20th april 08:03.
date 20th april, you don’t see the timestamp but BO considers this date as 20th april 00:00 which is inferior to the currentdate().