Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Armazenando DateTime (UTC) vs. Armazenando DateTimeOffset


Há uma grande diferença, onde você não pode usar o UTC sozinho.

  • Se você tem um cenário como este
    • Um servidor e vários clientes (todos geograficamente em diferentes fusos horários )
    • Os clientes criam alguns dados com informações de data e hora
    • Os clientes armazenam tudo no servidor central

  • Então:
    • datetimeoffset armazena a hora local do cliente e TAMBÉM o deslocamento para a hora UTC
    • todos os clientes sabem a hora UTC de todos os dados e também a hora local do local de origem das informações

  • Mas:
    • UTC datetime armazena apenas UTC datetime , para que você não tenha informações sobre o horário local no local do cliente de onde os dados foram originados
    • Outros clientes não sabem a hora local do local, de onde vieram as informações de data e hora
    • Outros clientes só podem calcular a hora local a partir do banco de dados (usando a hora UTC), não a hora local do cliente, de onde os dados foram originados

Um exemplo simples é o sistema de reserva de passagens aéreas ... A passagem aérea deve conter 2 vezes:- horário de "decolagem" (no fuso horário da cidade "De") - horário de "aterrissagem" (no fuso horário da cidade "Destino")