2010-12-17 5 views
2

내 문장에 다음 코드를 사용합니다.SQL Server에서 DateDiff는 어떻게 구현됩니까?

datediff(minute, visit.nexttime, visit.endtime) 

결과가 다릅니다.

나는 두 가지 결과를 보여줄 것이다.

  • 0시 24분 26초 - 25
  • 0시 32분 14초 - 32
  • 0시 5분 12초 - 5
  • 0시 6분 28초 - 7
  • 0시 3분 : 52-4
  • 0시 3분 32초 - 3

첫번째 25, 24 만 개 발사 26초가된다. 제 14.

세번째이다

초 하나 (32)는 여전히 5 제법 5 남아있다.

네 번째, 6 라운드에서 최대 7 초, 단 28 초입니다.

다섯 번째, 3 라운드에서 4 초까지 52 초.

마지막 3 명, 심지어 3 명 중 32 명입니다.

왜 그럴까요?

다음 코드를 사용하여 첫 번째 열을 가져옵니다.

CONVERT(varchar(6), datediff(second, visit.nexttime, visit.endtime)/3600) 
+ ':' + 
RIGHT('0' + CONVERT(varchar(2), (datediff(second, visit.nexttime, visit.endtime) % 3600)/60), 2) 
+ ':' + 
RIGHT('0' + CONVERT(varchar(2), datediff(second, visit.nexttime, visit.endtime) % 60), 2) 
as 'Transaction Time' 
+0

을 반환하는 경우 0

을 반환 질문의 제목을 'MySQL에 DateDiff가 구현 된 방법'으로 변경하십시오. 현재는 DateDiff를 사용하는 방법을 묻는 것처럼 보이므로 첫 번째 대답은 유용하지 않습니다. –

+1

귀하의 질문에 mysql 태그가 있지만 귀하의 확실한 의미는 mysql입니까? MySqls datediff는 내가 말할 수있는 한 2 개의 매개 변수를 사용합니다 ... –

+0

이름은 항상 혼란 스럽습니다 .. Microsoft SQL Server는 mysql 또는 mssql입니까 ?? – william

답변

1

실제로 SQL Server에 익숙하지 않지만 설명서를 읽는 중 here 나는 그 결과를 얻는 이유를 알고 있습니다.

반환 값은이 같은 설명 :

지정된 STARTDATE 및 ENDDATE 사이에 교차 지정된 날짜 부분의 경계 의 수 (부호있는 정수)를 돌려줍니다.

당신이 datepart에 대한 minute을 지정하기 때문에, 나는 이것이 초는 무시됩니다 의미 그냥 계산 기대하는 횟수 startdateenddate 사이의 미세한 변화를.

예 : startdateenddate가 같은 분 50초 떨어져 있었다

경우 startdateenddate 떨어져 5 초 있었지만 다른 분 안에, 그것은 1

0

MySql 설명서를 참조하십시오. 이것을 분명히해야합니다.

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediff

+0

그 중 하나 날짜 부분 만 설명합니다. 내가 가지고있는 어려움은 시간 부분이다. 정확하게 말하면 몇 분. – william

+0

이 링크는 OP를위한 도움을 전혀 제공하지 않습니다. 그는 이미이 기능을 사용하는 방법을 알고 있으며 구현에 대해 묻고 있습니다. –

+0

@Kirk Broadhurst가 나에게 쉽게 가도록 해주어서 고마워. :) – Bnjmn

1

은 DATEDIFF는 약간 이상하고 오히려 비 직관적이다. 그리고 그것은 Sybase의 오래된 시대 이후로 이런 식으로 작동합니다.

귀하의 경우에는 datediff (m, x, y)가 초를 완전히 무시합니다. 당신이 나이를 계산하려고 할 때

당신은 동일한 문제가 :

select datediff (y, '2010-12-31', '2011-01-01') 

가 둥근 차이가 약 1 년입니다 것을 의미 does't, 그것은 단지 1 새해 무슨 일이 생긴 것을 말한다.

원하는 결과를 얻으려면 초 단위를 사용했을 때와 마찬가지로보다 세부적인 기준으로 차이를 가져와야합니다.

관련 문제