sql >> Base de Datos >  >> RDS >> Sqlserver

Almacenamiento de DateTime (UTC) frente a almacenamiento de DateTimeOffset

Hay una gran diferencia, donde no puedes usar UTC solo.

  • Si tienes un escenario como este

    • Un servidor y varios clientes (todos geográficamente en diferentes zonas horarias )
    • Los clientes crean algunos datos con información de fecha y hora
    • Los clientes lo almacenan todo en el servidor central
  • Entonces:

    • datetimeoffset almacena la hora local del cliente y TAMBIÉN la compensación a la hora UTC
    • todos los clientes conocen la hora UTC de todos los datos y también una hora local en el lugar donde se originó la información
  • Pero:

    • La fecha y hora UTC almacena solo la fecha y hora UTC , por lo que no tiene información sobre la hora local en la ubicación del cliente donde se originaron los datos
    • Otros clientes no conocen la hora local del lugar de donde provino la información de fecha y hora
    • Otros clientes solo pueden calcular su hora local desde la base de datos (usando la hora UTC), no la hora local del cliente, donde se originaron los datos

Un ejemplo sencillo es el sistema de reserva de billetes de avión... El billete de avión debe contener 2 horas:- hora de "despegue" (en la zona horaria de la ciudad "Desde") - hora de "aterrizaje" (en la zona horaria de la ciudad "Destino")