Voto per impostarlo nella procedura (o il default per la colonna, per gli inserti). Non vi è alcun motivo per passare tutte queste informazioni attraverso tutti i livelli a meno che non sia necessaria una precisione di microsecondi per differenziare, ad es. quando l'utente ha fatto clic sul pulsante rispetto a quando la transazione è stata salvata nel database. Ciò è particolarmente vero se si dispone di un'applicazione distribuita:si desidera fare affidamento su tutti i server Web/applicativi per essere sincronizzati, per non parlare delle workstation degli utenti finali per le app client/server? Potresti avere server in data center diversi, tutti con fusi orari diversi, alcuni osservano l'ora legale, altri no, ecc. DateTime.UtcNow
dovrebbe cancellare la maggior parte di queste differenze, ma tornerei comunque a passare tutti quei dati in giro senza motivo. Il database sa che ore sono; lascia che memorizzi il valore per te e mantieni tutta quella logica fuori dall'applicazione.
(Inoltre, se stai memorizzando l'ora UTC, hai davvero bisogno di DATETIMEOFFSET
? In tal caso, hai ancora bisogno di un modo per la procedura per sapere da quale fuso orario provengono queste informazioni. In caso contrario, probabilmente dovresti semplicemente usare SMALLDATETIME/DATETIME/DATETIME2
a seconda della precisione richiesta.)