@lukegalea16
timestamp has a limit until year 2038, while datetime goes all the way til 9999.
If you are using MySQL, datetimeTz is the same as datetime, both are just datetime if you examine the table.
One of the common confusion about time and zones is that we need to somehow set/store the zone.
I beg to differ, there is only 1 flow of time, i.e. the conversion of time between any zone is a one to one relation.
So, storage should always be based on UTC and display should be dynamic, dependent on user's locale.
Both datetime and timestamp records just the point in the flow of time. It lets the code decide which zone to translate it to and display it.
datetimeTz stores not only the point in the flow of time, but also the zone (read: location) in certain database engines. Frankly, I cannot think of any use case where this is useful. Storing the time and location separately might make the code and logic easier to read.
To answer your question, I think datetime is a better approach since 18 years isn't all that far away.