nvarchar 数据类型到 datetime SQL 查询

nvarchar data type to a datetime SQL query

我有 2 tables ServiceTypeServices.

Service table 结构

    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.

尝试使用 concat

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

否则需要使用转换或转换为整数的 varchar