« Demi » est invariable placé devant un nom ou un adjectif et variable en genre placé après (demi et le nom sont reliés par un trait d’union).
Exemples : une « demi-journée », mais « trois jours et demi » et « trois heures et demie » ; Elle est demi-endormie. (Style littéraire)
« À demi » est une locution qui, placée devant un adjectif, est invariable, et non reliée à l’adjectif par un trait d’union.
Exemple : La caisse est à demi ouverte.
« Mi » est invariable placé devant un nom ou un adjectif et relié au nom ou à l’adjectif par un trait d’union.
Exemples : les yeux mi-clos ; la mi-temps ; des mi-bas.