How can I remove oil stains from a concrete floor?
Clay Absorbent.

This stuff is available at most auto parts repair stores.  Sometimes it is available at big box stores.

It is NOT the same as cat litter although it looks strikingly similar.  The resemblance is so close that "kitty litter" is the 'street' name for this product.

However, clay absorbent is far superior in its ability to remove oil from concrete.  For example, my father and I moved a broken 2.5 hp motor over a concrete walkway in a plastic tub.  At some point the load became unstable and the engine tilted enough to force us to drop the tub.  In doing so, we streaked the walkway with oil approximately 2" wide and 6" long.

Since I was away from home and he did not have any clay absorbent on hand, I promptly drove to purchase some and placed the product according to the manufacturers directions.  After the second application was swept up, I made a third application and ground the product into the concrete with my shoe and left it to sit until the next rain washed it away (not recommended, but hey the walkway was pristine beforehand and my dad has a low carbon footprint).

To this day, there is a spot on the walkway that is cleaner than the rest.  I am not exaggerating in the least when I say that the entire section now needs the ground-in-and-washed-off treatment to help minimize the white spot left behind where there was a dark black oil spot before.

Two applications should do for what you need.  Skip the ground in trick unless you promise to recover the waste water ;)

Edit:// Just read where you said spots are old and kitty litter will not work.

Try the clay absorbent.  It is about 100% more effective than cat litter on any day.  Also, if it does not come up, leave it for a night or two.

Other than that, (using a test spot!!!) dampen the concrete with fresh oil (detergents good...) then place the oil dry over it and leave for at least a day.  If all else fails, grind it in!