D'après mon expérience, vous devez généralement stocker les données au format UTC, avec le fuseau horaire correspondant dans une colonne séparée. Avoir une table pour les fuseaux horaires et stocker la clé de fuseau horaire est la chose raisonnable à faire avec une base de données relationnelle.
Dans ce cas cependant, toutes vos données sont déjà dans une heure locale, donc dans ce cas, vous pouvez stocker l'heure locale dans la colonne d'heure et ajouter une colonne pour le fuseau horaire. De cette façon, vous n'avez pas à convertir les dates qui sont déjà dans la base de données.
Le stockage du décalage n'est pas nécessaire, sauf si vous finissez par remarquer que la conversion de la date et de la zone en décalage prend trop de temps.