Ik probeer middels een datediff de doorlooptijd van een proces te bepalen in milliseconden (ms).
Begintijd en eindtijd staan in andere tabellen, maar dat is met een join simpel op te lossen.
Mijn probleem zit er in dat SQL server 2005 blijkbaar afrondingen kent op ms.
Wanneer ik mijn uitvraag bepaal een probleem met de resultaten. Ik krijg de verwachte resultaten -1 ms terug. Helaas is dit niet bij 100% van de records het geval. Dus +1 toevoegen in de SELECT is geen optie. Per record geen probleem, maar zodra ik een SUM van 16 miljoen records opvraag wordt het verschil te groot.
Op dit moment gebruik ik:
Dit is voor elke resultaat 1 ms te weinig. Weet iemand een oplossing waarmee ik dit kan omzeilen?
Google gaf me een mooi voorbeeld van het afrondingsprobleem. Ik weet niet of dit ook de oorzaak van mijn probleem is.
Zoals je ziet geeft de tweede optie een verschil van -1 ms.
Begintijd en eindtijd staan in andere tabellen, maar dat is met een join simpel op te lossen.
Mijn probleem zit er in dat SQL server 2005 blijkbaar afrondingen kent op ms.
Wanneer ik mijn uitvraag bepaal een probleem met de resultaten. Ik krijg de verwachte resultaten -1 ms terug. Helaas is dit niet bij 100% van de records het geval. Dus +1 toevoegen in de SELECT is geen optie. Per record geen probleem, maar zodra ik een SUM van 16 miljoen records opvraag wordt het verschil te groot.
Op dit moment gebruik ik:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| select AAA.UITV_ID, datediff(ms, AAA.B_TYD_UITV, BBB.E_TYD_UITV) from AAA left join BBB on AAA.UITV_ID = BBB.UITV_ID /* geeft 1773 643 1773 46 1773 656 1773 626 */ -- datetime velden select AAA.UITV_ID, AAA.B_TYD_UITV, BBB.E_TYD_UITV from AAA left join BBB on AAA.UITV_ID = BBB.UITV_ID /* geeft 1773 2010-10-22 13:42:21.627 2010-10-22 13:42:20.983 1773 2010-10-22 13:42:52.547 2010-10-22 13:42:52.500 1773 2010-10-26 09:08:40.100 2010-10-26 09:08:39.443 1773 2010-10-26 11:36:35.627 2010-10-26 11:36:35.000 */ |
Dit is voor elke resultaat 1 ms te weinig. Weet iemand een oplossing waarmee ik dit kan omzeilen?
Google gaf me een mooi voorbeeld van het afrondingsprobleem. Ik weet niet of dit ook de oorzaak van mijn probleem is.
SQL:
1
2
3
4
5
6
7
| SELECT CAST ('8/23/2005 13:01:08.510' AS DATETIME), CAST ('8/23/2005 13:01:08.791' AS DATETIME) /* geeft 2005-08-23 13:01:08.510 en 2005-08-23 13:01:08.790 */ |
Zoals je ziet geeft de tweede optie een verschil van -1 ms.
"Today is the worst day since yesterday"