I can also think of one more way to do this:
1) In the Subreport, change the datasource of the report to use a Command Object instead of Tables/Views
2) Create a query like this:
Select Max(table.date), table.field2, table.field 3 from
table
where
table.date < {?Date_Parameter}
Here, you need to create a parameter in the Add Command window and use it in the query like above.
You then need to go back to the Main Report, right-click the Subreport > Change Subreport Links > Move the parameter in the Main Report to the panel on the right > From the drop-down at the bottom left where it says "Subreport parameter field to use", choose the parameter you create in the Command Object of the Subreport.
That's it! The Subreport should only return the latest date that is less than the date you select.
-Abhilash