Community Wiki answer generated from comments on the question
CREATE TABLE ... AS SELECT ...,
CREATE TABLE (LIKE othertable, ...). Typically though, this is a sign of poor database design. If you must do this look into using partitioning via table inheritance instead.
Erwin Brandstetter: Or, if you can live with the known limitations, this would be a classical case of inheritance with a partitioning solution. Go with triggers for lots of single-row inserts or rules for bulk inserts.
jcolebrand♦: Add another column for year/month of entry, and use an index to parse over that data, and add a view that only selects stuff from the current month to keep from having to look at the old data till you need it? I mean, this seems like the most overly complex design I've seen.
Andriy M: Or perhaps you want just three more tables that you would copy the data to at the end of each month. So you'd have t1, t2, t3 for the current month, and t1_archive, t2_archive, t3_archive for all the past months.