SqlHints.com

även för ”DateTime2” (vs. ”DateTime”):

1. Att använda” DateAdd ” -funktionen är inte en trivial lösning för att inte ha implicit / enkel konvertering till en flytpunkt numerisk (# dagar.bråkdel av en dag) sedan min datum-tid, esp. du försöker ta hänsyn till flera (om inte alla) delar av datumet (dvs. lägga till / subtrahera 2 hela datumtider tillsammans / från varandra).

2. Kan inte enkelt beräkna ” ålder ”(t. ex. genom att bara subtrahera en” DateTime ” från en annan vs. använda” DateDiff ”- funktionen som inte returnerar ”ålder” när de två datumtiderna råkar vara på motsatta sidor av en kalender / klockgräns för den angivna enheten).

3. Kan inte enkelt använda i ”Avg” – Aggregatfunktionen (genom att bara ”Cast”’ing till ”Float” först och tillbaka igen till ”DateTime”). Btw, om du frågar vad syftet är att få en” Avg ” av datumtider: förutom användning för att få genomsnittlig varaktighet när datumtider (eftersom en gemensam basdatum-tid) används för att representera varaktighet (en vanlig praxis), är det också användbart att få för dashboard-typ statistik om vad den genomsnittliga datumtiden är i ett intervall / grupp av datumtider. En standard ad hoc-fråga för att undersöka / felsöka värden i en kolumn som kanske inte är giltiga någonsin / längre och / eller kan behöva föråldras är att lista för varje värde förekomstantalet och (om tillgängligt) min -, avg-och max-datumstämplarna som är associerade med det värdet.

Ja, jag inser att det finns en (ganska komplex) lösning formel (vid ”https://siderite.blogspot.com/2015/08/how-to-translate-t-sql-datetime2-to.html”), men även den formeln fungerar bara för datum gånger nyare än år 1970 (vilket innebär att du förlorar alla extra intervall *plus* 217 år och det extra intervallet är förmodligen (förmodligen) en av de 2 största proffsen av ”DateTime2” om än förmodligen inte behövs i de flesta användningsfall), och det är inte nödvändigtvis trivialt att göra det stödja mer intervall på grund av möjliga numeriska överflödesproblem.

och ja, jag inser att du också kan ”kasta” till ”DateTime” först (och om nödvändigt tillbaka igen till ”DateTime2”), men du skulle förlora den extra precisionen och igen, det extra intervallet (alla före år 1753) fördelarna med ”DateTime2” vs. ”DateTime” som igen är förmodligen de 2 största och också samtidigt, förmodligen inte sannolikt behövs, vilket väcker frågan Varför använda den när du förlorar de implicita / enkla omvandlingarna till flytande punkt numerisk (# av dagar) för addition / subtraktion / ”ålder” (vs. datediff) / avg calcs fördel som är en stor i min erfarenhet.

Lämna ett svar

Din e-postadress kommer inte publiceras.

More: