2016-10-14 9 views
0

У меня есть 2 таблицы ServiceType AND Services.Тип данных nvarchar для SQL-запроса datetime

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 здесь первый столбец имеет дату и время, а второй - дату и время, поэтому вам нужно изменить тип данных на varchar firstcolumn и то же самое для остальных. –

ответ

0

Попробуйте использовать Concat

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

Else нужно использовать бросание или преобразовывать в VARCHAR для целого числа

+0

это не может показать результат, как я ожидал ... –

+0

ok орфографическая ошибка .., но это показать результат как этот 6месяц 1000, так как я добавляю пространство между 6, месяцем и 1000 –

+0

Попробуйте использовать concat concat (Services.Frequency, '', Freq_Duration + '' ... –