2011-10-27 4 views
0

나는 테이블이라고 Data_Details을 가지고 같은 데이터를 찾습니다 : 나는 폐쇄 날짜와 분에서 서브 날짜의 차이를 얻기 위해 노력하고어떻게 날짜 시간, 날짜 및 시간 열 사이의 시간 차이를 얻을 수

DateTimeClosed   Datesub   TimeSub 
6/20/2011 18:00   5/16/2011   17:13:17 
6/20/2011 18:00   5/18/2011   13:45:17 
6/1/2011 19:00   5/24/2011   8:30:12 

. 그것은 나에게 다음과 같은 오류주고있다

SELECT convert(int,convert(Datetime,[DateTimeClosed])- 
(convert(Datetime,[Datesub])+convert(datetime,[TimeSub])))*24*60 
FROM dbo.Data_details 

:

메시지 241, 수준 16, 상태 1에서 날짜 및/또는 시간을 변환 할 때 변환이 실패 라인 2

나는 이런 식으로 뭔가를 썼다 문자열.

아무도 도와 줄 수 있습니까?

+0

우리에게 당신의 테이블 구조 (열 데이터 유형) – Lamak

+0

@Lamak 모든 열을주십시오 [varchar] (50) 데이터 형식이 – peter

답변

2

이 초 단위로 시간 차이를 반환

select datediff(SECOND,'5/16/2011'+' '+'17:13:17','6/20/2011 18:00') 

샘플 스크립트 :

declare @test as table 
(
date1 datetime, 
date2 date, 
date3 time 
) 
insert into @test 
values 
('6/20/2011 18:00'   , '5/16/2011'  , '17:13:17') 
select Datediff(second,cast (date2 as varchar)+' '+ cast(date3 as varchar),date1) from @test 

UPDATE - 영업 이익은 그들은 모두 VARCHAR에 있음을 명확히하는 것이 지금으로 VARCHAR를 사용 :

declare @test as table 
(
date1 varchar(50), 
date2 varchar(50), 
date3 varchar(50) 
) 
insert into @test 
values 
('6/20/2011 18:00'   , '5/16/2011'  , '17:13:17') 
select Datediff(second,cast (date2 +' '+date3 as datetime),cast (date1 as datetime)) from @test 
+0

내 테이블에있는 모든 데이터 형식은 Varchar (50)입니다. 쿼리도 시도했지만 나에게도 같은 오류가 나타납니다. – peter

+0

@Peter 시간, 날짜 및 시간. 그것이 당신의 질문에 대한 것입니다 :'날짜 시간, 날짜와 시간 열간의 시간 차이를 얻는 방법'. 각각의 유형으로 캐스팅하면 효과가 있습니다. 내가 구성 – Icarus

+0

내 나쁜하지만 위의 의견에 데이터 형식을 넣어 – peter

0

시험해보기 :

SELECT DATEDIFF(MINUTE,CONVERT(DATETIME,Datesub + ' ' + TimeSub,101),CONVERT(DATETIME,DateTimeClosed,101)) 
FROM yourTable 
+0

아직도 나에게 같은 오류가 – peter

+0

@ 피터 - 그럼 당신은 아마 다른 형식으로 귀하의 예제 또는 일부 불가능한 날짜 (예 : '13/13/2011 ') – Lamak

+0

감사합니다. 방금'닫기 '와 같은 가치가있는 레코드가 발견되어서 오류의 원인이되었습니다. 내가 너의 질문이 완벽하게 작동한다고 알았어. 다시 한번 감사합니다 – peter

0

나는 당신이 분을 반환합니다 DateDiff

이 예제를 찾고 생각 :

SELECT DATEDIFF(m, CONVERT(datetime, [Datesub] + ' ' + [TimeSub]), CONVERT(datetime, [DateTimeClosed])) 
FROM dbo.Data_details 
0
SET DATEFORMAT MDY 
;with dates AS 
(
SELECT '6/20/2011 18:00' as datetimeclosed,'5/16/2011' as datesub,'17:13:17' as timesub UNION ALL 
SELECT '6/20/2011 18:00','5/18/2011','13:45:17' UNION ALL 
SELECT '6/1/2011 19:00','5/24/2011','8:30:12' 
) 
SELECT 
DATEDIFF(minute,CAST(datesub + ' ' + timesub AS DATETIME),CAST(datetimeclosed AS DATETIME)) as time_diff_in_minutes 
FROM dates