2016-10-14 2 views
0

2 테이블 ServiceTypeServices이 있습니다.datetime SQL 쿼리에 대한 nvarchar 데이터 형식

Service 테이블 구조

ServiceID   int   Unchecked 
    Service_TypeID  int   Unchecked 
    Last_performed  date   Unchecked 
    Frequency   nvarchar(50) Unchecked 
    Freq_Duration  nvarchar(50) Unchecked 
    Freq_Mileage  nvarchar(50) Unchecked 
    Remin_frequ  nvarchar(50) Unchecked 
    Remin_duration  nvarchar(50) Unchecked 
    Remin_Mileage  nvarchar(50) Checked 
    Next_due_datetime datetime  Unchecked 
    Next_due_mileage nvarchar(50) Unchecked 

ServiceType 구조는

Service_TypeID int    Unchecked 
Service_Type nvarchar(50) Unchecked 

샘플 데이터

ServiceID Service_TypeID  Last_performed Frequency Freq_Duration Freq_Mileage Remin_frequ Remin_duration Remin_Mileage Next_due_datetime Next_due_mileage 
3    2     2012-12-01  6    month(s)  1000    1   day(s)   10   2013-03-10    1000 

이며,이 같은 데이터를 원하는 :

을 이를 위해

ServiceID Service_TypeID  Last_performed Service Frequency Next Service  Create Reminder 
3    2     2012-12-01  6 month(s) 1000  2013-03-10 1000 1 day(s) 10 
나는이 쿼리 시도 :

select 
    Services.ServiceID, 
    ServiceType.Service_Type, 
    Last_performed 
    Services.Frequency+''+Freq_Duration+''+Freq_Mileage as [Service Frequency], 
    Services.Next_due_datetime+''+Next_due_mileage as [Next Service], 
    Services.Remin_frequ+''+Remin_duration+''+Remin_Mileage as [Create Reminder] 
from 
    Services 
inner join 
    ServiceType on ServiceType.Service_TypeID = Services.Service_TypeID 

을하지만 난이 오류 :

The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value.

+0

nvarch를 직접 연결할 수 없습니다. ar 및 날짜 형식을 변환해야합니다. 날짜 변환을위한 함수를 nvarchar 형식과 연결하여 사용할 수 있도록 변환하십시오. –

+0

하지만 데이터 형식이 datetime 일 때 날짜로 변환하는 이유는 무엇입니까? –

+0

Services.Next_due_datetime + ''+ Next_due_mileage here 첫 번째 열은 datetime이고 두 번째는 datetime이므로 첫 번째 열의 varchar로 데이터 유형을 변경하고 나머지는 동일하게 변경해야합니다. –

답변

0

캐스트를 사용하거나 VARCHAR로 변환 할 필요가 CONCAT에게 그렇지

concat(Services.Frequency,' ',Freq_Duration+' ',Freq_Mileage) as [Service Frequency] 

를 사용해보십시오 정수의 경우

+0

이것은 내가 예상 한대로 결과를 표시 할 수 없습니다 ... –

+0

맞춤법 오류입니다.하지만이 결과는 6 개월 (s) 1000입니다. 6 월과 1000 사이에 공백을 추가하는 방법 –

+0

concat을 (를) 사용해보십시오 concat (Services.Frequency, '', Freq_Duration + ''... –