webForumDet fria alternativet

DATEDIFF fel

12 svar · 328 visningar · startad av Nöff

NöffMedlem sedan nov. 2003569 inlägg
#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?

@ndersMedlem sedan juni 200026 914 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.

NöffMedlem 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å?

@ndersMedlem sedan juni 200026 914 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

NöffMedlem 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

@ndersMedlem sedan juni 200026 914 inlägg
NöffMedlem 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..

LarsGMedlem sedan dec. 200012 465 inlägg
#8

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

NöffMedlem sedan nov. 2003569 inlägg
#9

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

LarsGMedlem sedan dec. 200012 465 inlägg
#10

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

NöffMedlem 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.

LarsGMedlem sedan dec. 200012 465 inlägg
#12
SELECT datediff(second,'2004-04-22 13:01:59',
 '2004-04-22 13:02:00' )/60
NöffMedlem 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 :)

Genererad på 382 ms · cache AV · v20260730165559-full.f96bc7eb