My best stabs so far are...
RewriteRule ^index.php/2012/30/([^/\.]+)?$ 2012/03/$1 [R=301,L]
RewriteRule ^/index.php/2012/30/$ /2012/30/$1 [R=301,L]
They're probably both wrong in some way, I haven't tried either yet because one mistake could damage a lot of other sites so I'd rather be correct first time.
PS - Yes I know index.php/ is a backwards step but for various reasons I couldn't use the normal WordPress method and had to go with a custom. It actually worked out quite well, if a bit uglier ;) .