Cuando me enfrenté a este problema exacto, encontré esta referencia , que asigna la sucinta lista de zonas horarias estilo Windows a un subconjunto de la ridículamente exhaustiva lista de zonas horarias estilo Unix.
A los usuarios se les presenta un menú desplegable de estos nombres de estilo de Windows (por ejemplo, (GMT-05:00) Hora del Este (EE. UU. y Canadá)), y su selección se almacena en la base de datos en el formato de estilo Unix (por ejemplo, América/Nueva_York )
El trabajo de aplicar la preferencia de zona horaria del usuario se realiza en PHP en el momento de la visualización, utilizando el Clase de fecha y hora . Creo que recomendaría esto, para que pueda estar seguro de que las fechas que está manipulando en SQL/PHP siempre están en UTC, hasta que se muestren.