After a recent civicrm upgrade, one of my pricefields in a price set just 'disappeared'. There were no errors showing and the pricefield appeared to be correctly configured.
I solved this by looking in the civicrm_price_field table and noticed that the missing price field had an expiry date of '000-00-00 00:00:00' vs. NULL for other expiry dates. Setting the price field expiry to NULL allowed the price field to be redisplayed.
On the configuration screen, those two values both appear the same.
Conclusion: a '0000-00-00 00:00:00' in a price field row expiry field should be considered invalid/error.