2016-10-14 17 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を直接連結できません日付と日付の型を変換する必要があります。変換後の関数を変換してnvarchar型と連結できます。 –

+0

しかし、なぜデータ型がすでにdatetimeであるのかを日付に変換するのはなぜですか? –

+0

Services.Next_due_datetime + '' + Next_due_mileageここでは、最初の列はdatetimeのもので、2番目のものはdatetimeのものです。したがって、最初の列のvarcharにデータ型を変更し、残りは同じものを変更する必要があります。 –

答えて

0

は連結

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

キャストを使用またはvarcharに変換する必要がありますを使用してみてください整数の場合

+0

これは私が期待したように結果を表示することはできません... –

+0

このスペルミス..このような表示結果はこの6ヶ月1000ですので、6、月と1000の間のスペースを追加する方法 –

+0

concatを使用してください concat (Services.Frequency、 ''、Freq_Duration + '' ... –

関連する問題