Having originally joined the club back in October on a short-term deal, Bates' maiden City contract expired after Saturday's home draw with Bristol City.
The versatile defender, who can play right back, centre half and even as a holding midfielder, has made 14 appearances for City so far since making his debut at Crawley Town on 19 October 2013.
Fresh from penning his new contract, Bates will now look to keep his place in City's starting eleven for their Yorkshire derby at Sheffield United on Saturday.