문제

INSERT INTO timecrunch.dbo.intervals (IntervalID, Duration) 
SELECT ixInterval, DATEDIFF(hour, dtStart, dtEnd) FROM fogbugz.dbo.TimeInterval
WHERE dtEnd is not NULL

Intervalid는 int이며 지속 시간은 플로트입니다

나는 모든 시간당 지속 시간을 지속 시간 열에 넣으려고 노력하고 있습니다 ... 1 시간 미만이라도 분수를 사용하여 플로트를 넣는 이유는 무엇입니까?

돕다.

추신 : 오류가 없어도 실행 중이지만 간격 테이블이 여전히 비어있는 후에도 여전히 데이터가 TimeInterval 테이블에 있다는 것을 알고 있습니다.

도움이 되었습니까?

해결책

왜 데이터가 나타나지 않는지 잘 모르겠지만 Datediff는 플로트를 반환하지 않을 것입니다. 플로트를 얻으려면 더 작은 시간 단위를 사용하고 분당 단위 수로 나누고 싶을 것입니다. 예시:

DATEDIFF(second, dtStart, dtEnd) / (3600.0)

다른 팁

Datediff는 교차 된 날짜 부품 경계 수의 int를 반환합니다. int에서 float로 암시 적 변환에 문제가없는 한 시간 수의 바닥을 얻을 것으로 기대합니다.

수신 된 오류 메시지를 게시하는 것도 도움이됩니다.

한 시간의 실제 분수를 삽입하려면 다음을 사용하십시오.

INSERT INTO timecrunch.dbo.intervals (IntervalID, Duration) 
SELECT 
  ixInterval, 
  DATEDIFF(mi, dtStart, dtEnd) / 60.0
FROM 
  fogbugz.dbo.TimeInterval
WHERE 
  dtEnd is not NULL

Datediff는 항상 당신에게 int 값을 반환합니다.

쿼리가 실제로 일부 데이터를 반환하는지 확인하려면 삽입 비트를 사용하여 자체적으로 선택을 실행해보십시오.

편집 : 다른 사람들이 말했듯이 Datediff는 플로트가 아닌 int를 반환하지만 인서트가 일부 데이터를 삽입하지 못하게해서는 안됩니다.

먼저 Select를 실행하면 어떤 결과를 얻습니까?

SQL Server에서 Datediff는 int를 반환합니다 (MSDN을 참조하십시오)

Datediff는 플로트가 아닌 int를 반환 할 것입니다. 그게 당신이 겪고있는 문제입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top