webForumDet fria alternativet

DATEDIFF fel

Databaser & SQL

12 svar · 328 visningar · startad av Nöff

Medlem sedan nov. 2003569 inlägg
Frågan#1

Nån som vet varför minutskillnaden på denna blir 1?

SELECT DATEDIFF(mi,'2004-04-22 12:00:59','2004-04-22 12:01:00')

när det borde vara 0.

nån som vet hur man ska få det rätt?

Medlem sedan juni 200032 967 inlägg
#2

Jag skulle gissa på att det är så datediff fungerar. Det är en minuts skillnad mellan klockan 12:00 och klockan 12:01.

Medlem sedan nov. 2003569 inlägg
#3

Men det är ju inte en minuts skillnad mellan 12:00:59 och 12:01:00 ;)

nån som vet varför den ger 1 minut ändå?

Medlem sedan juni 200032 967 inlägg
#4

Nej, men det beror på hur funktionen är skriven, och det vet inte jag.

Jag vill minnas att det är så här DateDiff() fungerar i VB i alla fall, att den struntar i alla enheter som är mindre än den man vill jämföra på.

Mvh

Medlem sedan nov. 2003569 inlägg
#5

Hmm, Men hur ska man skriva en funktion som returnerar korrekt antal minuter mellan 2 datum då måntro?, eftersom datediff inte är akkuratt

Medlem sedan juni 200032 967 inlägg
Medlem sedan nov. 2003569 inlägg
#7

select (timestampValue1 - timestampValue2) hour(4) to second from t

uuh, hur använder man denna, om jag vill att den returnerar minuter?.
testade:
select ('2004-04-22 12:00:59' - '2004-04-22 12:01:00') hour(4) to minutes

funkade inte riktigt..

Medlem sedan dec. 200012 464 inlägg
#8

Du får räkna i sekunder och dela med 60.

Medlem sedan nov. 2003569 inlägg
#9

hmm men jag får SQL fel "Incorrect syntax near '4'. "
:(

Medlem sedan dec. 200012 464 inlägg
#10

Glöm det där med intervall, det fungerar inte i SQL server.

Medlem sedan nov. 2003569 inlägg
#11

hmm, men jag undrar hur man löser det. är inne på en sådan här nätt liten SQL sats :)

SELECT ROUND(CONVERT(float,CAST('2004-04-22 13:02:00' AS DATETIME) - CAST('2004-04-22 13:01:59' AS DATETIME))*100000,0)

men jag undrar om den kommer funka någe bra, känns inte som en riktigt bra lösning.

Medlem sedan dec. 200012 464 inlägg
#12
SELECT datediff(second,'2004-04-22 13:01:59',
 '2004-04-22 13:02:00' )/60
Medlem sedan nov. 2003569 inlägg
#13

Fint lars, kom på denna precis samtidigt :

SELECT DATEDIFF(ss,'2004-04-22 12:00:59','2004-04-22 12:01:59')/60 :)

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)