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

Hvor skal en UTC-dato-tidsværdi indstilles i n-tier-applikation:Præsentationslag, Domæne eller Database?

Jeg stemmer for at sætte det i proceduren (eller standarden for kolonnen, for indsættelser). Der er ingen grund til at sende al denne information gennem alle lagene, medmindre du har brug for mikrosekunds nøjagtighed for at differentiere f.eks. når brugeren klikkede på knappen i forhold til hvornår transaktionen blev foretaget i databasen. Dette gælder især, hvis du har en distribueret applikation - vil du stole på, at alle dine web-/applikationsservere er synkroniserede, ligegyldigt slutbrugerarbejdsstationer til klient/server-apps? Du kan have servere i forskellige datacentre, alle med forskellige tidszoner, nogle observerer sommertid, andre ikke osv. DateTime.UtcNow burde udslette de fleste af disse forskelle, men jeg ville stadig gå tilbage til at videregive alle de data uden grund. Databasen ved, hvad klokken er; lad den gemme værdien for dig og hold al den logik ude af applikationen.

(Hvis du også gemmer UTC-tid, har du virkelig brug for DATETIMEOFFSET ? Hvis det er tilfældet, har du stadig brug for en måde for proceduren at vide, hvilken tidszone disse oplysninger kom fra. Hvis ikke, så skal du nok bare bruge SMALLDATETIME/DATETIME/DATETIME2 afhængig af den nødvendige nøjagtighed.)




  1. Fejl:vælg kommando nægtet bruger '<brugerid>'@'<ip-adresse>' for tabellen '<tabelnavn>'

  2. SQL-forespørgsel til at finde manglende rækker mellem to relaterede tabeller

  3. Multiple del og tildel ordre_id

  4. Problem med at vise forespørgselsresultater