sql >> Database >  >> RDS >> Sqlserver

Waar stel je een UTC datetime-waarde in in n-tier-applicatie:presentatielaag, domein of database?

Ik stem voor het instellen ervan in de procedure (of de standaard voor de kolom, voor tussenvoegsels). Er is geen reden om al deze informatie door alle lagen te laten gaan, tenzij je een nauwkeurigheid van microseconden nodig hebt om b.v. wanneer de gebruiker op de knop klikte versus wanneer de transactie in de database werd vastgelegd. Dit is met name het geval als u een gedistribueerde toepassing heeft - wilt u erop vertrouwen dat al uw web-/toepassingsservers synchroon lopen, laat staan ​​de werkstations van eindgebruikers voor client-/server-apps? Mogelijk hebt u servers in verschillende datacenters, allemaal met verschillende tijdzones, sommige met zomertijd, andere niet, enz. DateTime.UtcNow zou de meeste van die verschillen moeten uitwissen, maar ik zou nog steeds teruggaan naar het doorgeven van al die gegevens zonder reden. De database weet hoe laat het is; laat het de waarde voor u opslaan en houd al die logica uit de toepassing.

(Ook als je UTC-tijd opslaat, heb je dan echt DATETIMEOFFSET nodig ? Als dat het geval is, moet u voor de procedure nog een manier hebben om te weten uit welke tijdzone deze informatie afkomstig is. Zo niet, dan moet u waarschijnlijk gewoon SMALLDATETIME/DATETIME/DATETIME2 gebruiken afhankelijk van de vereiste nauwkeurigheid.)




  1. Hoe gegevens uit meerdere tabellen op de juiste manier te selecteren met behulp van joins/subquery? (PHP-MySQL)

  2. Genereer maandnaam, dagnaam, weeknummer en dagnummer tussen twee datums

  3. Opmerkingen insluiten in MySQL-instructies

  4. Geneste klassen - CustomRowMapper !! Geen probleem meer!! - Deel 1