Sadly, it was using timestamps that led me to this question. I was storing some records that described recurring events using a timestamp and realized that it was going to be impossible to do a search on those events for recurring monthly events because you never know whether a month is going to have 28 days, 29 days, 30 days, or 31 days.
I'm still trying to wrap my head around the DST weirdness and as far as I can tell, it only seems to rear its head when we're either talking about a span of time that straddles a change in DST or when we compare time stamps generated by PHP versus timestamps generated by MySQL. There was a post in the MySQL docs which insisted that MySQL timestamp functions were not hip to DST changes where as PHP ones were.
That said, you still might be right. I might be able to use timestamps. I guess I was worried about the Y2.037K problem (timestamps after the year 2037 are undefined because the second count exceeds MAXINT). The neato mysql DATE format supports years up to December 31st 9999 😉
If MySQL can easily compare dates in a field of type DATE I was hoping to use that. On the other hand, different versions of MySQL might behave differently. There are so many considerations!
So if I'm forced to use unix timestamps, I think I can avoid DST by doing all the date<-->timestamp conversions in PHP and just limit all my queries to checking timestamps.