pss,
I think you are on the right track...but once I add the functions i don't get any data but of course the data is there when I hard code the date..
SQL> select count(*) from my_table where date_col01
2 = last_day(add_months(date_col01,-3));

COUNT(*)
----------
0

SQL> select count(*) from my_table where date_col01 ='31-MAR-2008';

COUNT(*)
----------
35362
p/s
I'm doing (date_col01, -3) or month of march because last month as of now is march. Could the (=) sign be the issue?