Blöd ist nur, wenn man nach diesem Datum einen alten Auftrag (Rechnung) korrigieren muß, dann rechnet das Programm mit den neuen Preisen.
Wie oft kommt das denn vor? Wenn das sehr selten ist, kann man auch einfach mal die Menschen in die Verantwortung nehmen, die die Rechnung bearbeitet. Ich gehe davon aus, dass man dort den Preis auch manuell pflegen kann.
Ansonsten würde ich auch Lösung 2a verwenden. Aber dafür muss dann möglicherweise auch die Anwendung angepasst werden. Es sei denn, das ist so gut strukturiert, dass du eine View (oder andere Möglichkeiten der
DB) genutzt hast. Das würde den Anpassungsaufwand relativ gering halten.