Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Memorizzazione di DateTime (UTC) rispetto alla memorizzazione di DateTimeOffset

C'è un'enorme differenza, in cui non puoi utilizzare UTC da solo.

  • Se hai uno scenario come questo

    • Un server e diversi clienti (tutti geograficamente in diversi fusi orari )
    • I client creano alcuni dati con informazioni sulla data e ora
    • I client archiviano tutto sul server centrale
  • Quindi:

    • datetimeoffset memorizza l'ora locale del client e ANCHE l'offset all'ora UTC
    • tutti i clienti conoscono l'ora UTC di tutti i dati e anche l'ora locale nel luogo in cui le informazioni hanno avuto origine
  • Ma:

    • Dataora UTC memorizza solo dataora UTC , quindi non hai informazioni sull'ora locale nella posizione del client da cui hanno avuto origine i dati
    • Altri client non conoscono l'ora locale del luogo da cui provengono le informazioni datetime
    • Altri clienti possono calcolare la loro ora locale solo dal database (usando l'ora UTC) non l'ora locale del cliente, da cui hanno avuto origine i dati

Un semplice esempio è il sistema di prenotazione del biglietto aereo ... Il biglietto aereo dovrebbe contenere 2 tempi:- ora di "decollo" (nel fuso orario della città "Da")- ora di "atterraggio" (nel fuso orario della città di "Destinazione")