Is factor 7 lot enough?
datetime.datetime.strptime(a, '%Y-%m-%d').date() # 8.87us
datetime.date(*map(int, a.split('-'))) # 1.28us
EDIT: great idea with explicit slicing:
datetime.date(int(a[:4]), int(a[5:7]), int(a[8:10])) # 1.06us
that makes factor 8.