首页 > 解决方案 > 消息 529,级别 16,状态 2,行 1 不允许从数据类型 int 到时间的显式转换

问题描述

SELECT 
    Reference_Number,
    c.First_Name + ' ' + c.Last_Name AS 'Customer_Name',
    Staff_FirstName + ' ' + Staff_LastName AS 'Staff_Name',   
    Date_Time, Summary, OtherDetails,
    CAST(Hold_Time AS TIME(0)) AS 'HoldTime',
    CAST(Duration AS TIME(0)) AS 'Duration',
    Call_Status         
FROM
    Support_Call AS tc 
INNER JOIN 
    customer AS c ON c.CustomerID = c.CustomerID
INNER JOIN 
    staff AS s ON tc.StaffID = s.StaffID
WHERE 
    Call_Status LIKE 'Pending%'
ORDER BY 
    Date_Time DESC;

我正在尝试计算未决呼叫的所有详细信息,但出现错误。Reference_numberINT数据类型

标签: sql-server

解决方案


我猜 [Duration] (和/或 [Hold_Time])是 INT 类型,如果该值以分钟为单位(否则相应更改),然后使用:

CAST(DATEADD(mi, Duration, CAST(0 AS DATETIME)) as time(0)) AS 'Duration'

由于您使用 TIME(0) 数据类型,因此转换后的字段值不能大于 24h


推荐阅读