Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Stockage DateTime (UTC) vs stockage DateTimeOffset

Il y a une énorme différence, où vous ne pouvez pas utiliser UTC seul.

  • Si vous avez un scénario comme celui-ci

    • Un serveur et plusieurs clients (tous géographiquement dans différents fuseaux horaires )
    • Les clients créent des données avec des informations de date/heure
    • Les clients stockent tout sur un serveur central
  • Ensuite :

    • datetimeoffset stocke l'heure locale du client et AUSSI le décalage à l'heure UTC
    • tous les clients connaissent l'heure UTC de toutes les données ainsi qu'une heure locale à l'endroit d'où proviennent les informations
  • Mais :

    • La date et l'heure UTC stockent uniquement la date et l'heure UTC , vous ne disposez donc pas d'informations sur l'heure locale de l'emplacement du client d'où proviennent les données
    • Les autres clients ne connaissent pas l'heure locale du lieu d'où proviennent les informations de date/heure
    • Les autres clients ne peuvent calculer leur heure locale qu'à partir de la base de données (en utilisant l'heure UTC) et non l'heure locale du client, d'où proviennent les données

Un exemple simple est le système de réservation de billets d'avion ... Le billet d'avion doit contenir 2 heures :- l'heure de "décollage" (dans le fuseau horaire de la ville "De") - l'heure d'"atterrissage" (dans le fuseau horaire de la ville "Destination")