sql >> Databáze >  >> RDS >> Sqlserver

Kde nastavit hodnotu UTC datetime v n-vrstvé aplikaci:Prezentační vrstva, Doména nebo Databáze?

Hlasuji pro nastavení v postupu (nebo výchozí pro sloupec, pro vložky). Není důvod předávat všechny tyto informace přes všechny vrstvy, pokud nepotřebujete mikrosekundovou přesnost pro rozlišení např. když uživatel kliknul na tlačítko vs. když byla transakce potvrzena v databázi. To platí zejména v případě, že máte distribuovanou aplikaci – chcete se spolehnout na to, že všechny vaše webové/aplikační servery budou synchronizované, bez ohledu na pracovní stanice koncových uživatelů pro aplikace typu klient/server? Můžete mít servery v různých datových centrech, všechny s různými časovými pásmy, některé dodržují letní čas, některé ne atd. DateTime.UtcNow by měl odstranit většinu těchto rozdílů, ale stále bych se vrátil k předávání všech těchto dat bez důvodu. Databáze ví, kolik je hodin; nechte jej uložit hodnotu pro vás a ponechat veškerou logiku mimo aplikaci.

(Také pokud ukládáte čas UTC, opravdu potřebujete DATETIMEOFFSET ? Pokud ano, pak stále potřebujete nějaký způsob, aby postup zjistil, ze kterého časového pásma tyto informace pocházejí. Pokud ne, pak byste pravděpodobně měli použít pouze SMALLDATETIME/DATETIME/DATETIME2 v závislosti na požadované přesnosti.)




  1. blokování přihlášení po X neúspěšných pokusech

  2. Co je MySQL Workbench?

  3. Použít časový datový typ serveru SQL Server v aplikaci C#.NET?

  4. Ukázková databáze SQLite