0

두 날짜/시간 (CreatedDate 및 ClosedDate)을 가져 오는 저장 프로 시저에서 보고서를 만듭니다. 보고서에 차이 (즉, 열린 시간부터 닫히는 데 걸린 시간)를 보여주는 항목이 필요합니다. 첫째, ClosedDate (저장 프로 시저가 아닌 보고서 [SQL Server Reporting Services])에서 CreatedDate를 뺀 다음 72.20 : 34 : 18.6230000 (day.hour : minute : 초)과 같은 시간이 생겼습니다. 가능하다면 낮 시간으로 줄여야합니다. ...SQL에서 시간을 day.hour로 형식 지정

나는 MSDN (http://msdn.microsoft.com/en-us/library/)에있는 일부 기능을 실험하고있었습니다. ms186724.aspx). DATEDIFF는 내가 필요로하는 것을 거의 제공하지만, 나는 단지 며칠이나 시간을 지정할 수 있으며 이상적으로 (나는 말했듯이) '닫을 시간'을 둘 다로 (day.hour) 표시해야합니다.

이것이 가능합니까? 분

답변

0
  • 변환은
  • 는 1440
  • 격차는 모듈로 1440
  • 시간 동안 60, 나누기 남은 시간을 제공합니다 모든 일을 제공합니다 (테스트하지) 같은

뭔가 :

SELECT 
    CAST(DATEDIFF(minute, CreatedDate, ClosedDate)/1440 AS varchar(20)) + '.' 
    CAST((DATEDIFF(minute, CreatedDate, ClosedDate) % 1440)/60 AS varchar(20)) 
FROM 
    MyTable 

내가 오해 한 시간 표현으로 시끄럽게해야 할 수도 있습니다

일과 시간에 대한 DATEDIFF는 경계를 기준으로합니다 : 즉, 자정에 걸친 2 개의 값 사이에 단 3 분이 있으면 1 시간/일 차이가 있습니다.

은 DATEDIFF의 INT를 오버플로 4000 년

생각의 차이가 필요합니다 : DATETIME2를 사용

  • 을 최저의 0001-01-01
  • 을 CreatedDate이 그래서 편집

    을 사용
  • ClosedDate는 "열린"항목에 대해 9999-12-31와 같은 센티널 값입니다.
  • ,
  • CreatedDate 및 ClosedDate는 날짜에 VARCHAR 및 전환되어

예 내 주위 104K 분 것 칠십이일 차이를 나타낸다 결함이다.

는 난 당신이 불과 반 억 정도 분 것보다 1000 년의 차이가 어디에 있는지이 시도 할

: SSRS에서

SELECT * FROM mytables 
WHERE DATEDIFF(year, CreatedDate, ClosedDate) > 1000 
+0

@ gbn, 빠른 응답에 감사드립니다. –

+0

@ gbn 저장 프로 시저를 실행하면 "두 datetime 열의 차이로 인해 런타임에 오버플로가 발생합니다."라는 오류가 발생합니다. 일반적으로 시간 측정의 정수 범위를 초과하기 때문에 이러한 현상이 발생합니다.나는 처음에는 표현의 결합 때문이라고 생각했지만 표현의 절반 만 시도했지만 여전히 실패했습니다. 어떤 아이디어? CAST/DATEDIFF를 수행하기 전에 더 축소 할 수있는 방법이 있습니까? –

+0

데이트 페어만을 시험해 보셨습니까? – gbn

1

을, 당신이 보여 그 열을 사용자 지정 형식을 적용 할 수 있습니다 단지 며칠입니다. 디자인 모드 -> 텍스트 상자 속성 -> 번호 (왼쪽)에서 열을 마우스 오른쪽 단추로 클릭하십시오. 필요한 날짜, 시간 또는 숫자 형식 중 하나가 보이지 않는 경우 하단에 맞춤형을 만드십시오.

관련 문제