If I understood you right, you need only two meta fields: start_date
and end_date
for your posts. Then you can compare current date to these fields and create (update) a taxonomy for the posts:
- Undated, if the post have no both start and end dates;
- Dated, if there only start date exists and current date is lesser;
- Ongoing, if current date is between start and end dates;
- Completed, if current date is greater than end date.
Each time somebody visits the site your theme or plugin function will check the dates and update taxonomies for posts where current date does not fit in it’s taxonomy any more.