Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Uspoređivanje podataka datetime tipa

[es] :: MS SQL :: Uspoređivanje podataka datetime tipa

[ Pregleda: 1541 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sule99
student

Član broj: 227708
Poruke: 93
*.adsl.net.t-com.hr.



+1 Profil

icon Uspoređivanje podataka datetime tipa18.01.2011. u 14:50 - pre 161 meseci
Pozdrav!

Zanima me da li neko može objasniti pojavu koju sam nedavno primjetio u SQL-u, a odnosi se na podatke tipa datetime i njihovo uspoređivanje.

primjer 1.

Code:
declare @d1 datetime
declare @d2 datetime

select    @d1 = '2010-01-01 00:00:00.002', @d2 = '2010-01-01 00:00:00.003'

if (@d1 = @d2)
select 'isto'
else
select 'nije isto'


Rezultat ovog upita je "isto"



primjer 2.

Code:
declare @d1 datetime
declare @d2 datetime

select    @d1 = '2010-01-01 00:00:00.004', @d2 = '2010-01-01 00:00:00.005'

if (@d1 = @d2)
select 'isto'
else
select 'nije isto'


rezultat je "nije isto"

Znači, kada se radi o razlici samo 1 milisekunde, nekada vraća da su podaci jednaki, a nekada da nisu jednaki. Slobodno probajte sa nekim drugim vrijednostima, bitno je samo da je razlika 1 milisekunda.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Uspoređivanje podataka datetime tipa18.01.2011. u 15:17 - pre 161 meseci
rezolucija datetime je 1/300 sekunde, zaokruzeno

dakle 0.000, 0.003, 0.007, 0.010, itd na osnovu 0.000, 0.00333333..., 0.0066666..., itd


kad parsira string, SQL zalepi na najblizu vrednost, pa je i 0.002 i 0.003 u stvarti isti datetime (.003) a 0.004 i 0.005 nije (jedan zalepi za 0.003 drugi za 0.007). Prosto ces to i sam videti sa select @d1, @d2

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

sule99
student

Član broj: 227708
Poruke: 93
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Uspoređivanje podataka datetime tipa19.01.2011. u 07:33 - pre 161 meseci
Hvala na odgovoru, sad stvari postaju jasnije zašto u SQL 2008 ima novi tip podatka datetime2 koji ima veću točnost.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Uspoređivanje podataka datetime tipa19.01.2011. u 08:06 - pre 161 meseci
Pa, iskreno po mom licnom misljenju, mislim da je datetime2 uveden zbog ISO8601, da bi pokrili sve moguce oblike (zato i mozes da odredis broj deciamalnih mesta iza sekunde). U principu, ako ne pravis aplikaciju koja je toliko oesltljiva na milisekude i nize uopste ti nije ni potreban, sto dokazuje i broj aplikacija koje sasvim lepo rade sa datetime i bez 7 decimalnih mesta iza sekunde. Veci opseg i preciznost znaci i veci storage, i za podatke i za indexe, i znaci sporije izvrsavanje svih komparativnih operacija nad tipom.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: MS SQL :: Uspoređivanje podataka datetime tipa

[ Pregleda: 1541 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.