Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 通过更新查询将分钟转换为HH:MM格式_Sql Server_Tsql - Fatal编程技术网

Sql server 通过更新查询将分钟转换为HH:MM格式

Sql server 通过更新查询将分钟转换为HH:MM格式,sql-server,tsql,Sql Server,Tsql,我有一个以持续时间为列的表,其中包含分钟数之和,我想将所有持续时间转换为HH:MM格式。 输出应如下所示: ECode Duration 101 3.06 102 24.06 103 18.36 WITH CTE AS ( SELECT ECode, CAST(Duration AS INT) AS Duration FROM YourTable ) SE

我有一个以持续时间为列的表,其中包含分钟数之和,我想将所有持续时间转换为HH:MM格式。

输出应如下所示:

ECode        Duration
101           3.06
102           24.06
103           18.36
WITH CTE
AS
(
    SELECT
        ECode,
        CAST(Duration AS INT) AS Duration
    FROM
        YourTable
)
SELECT
    SELECT CAST(Duration/ 60 AS VARCHAR(10)) + '.' 
    + RIGHT('0' + CAST(Duration % 60 AS VARCHAR(2)), 2) AS Duration
FROM
    CTE
我想用一个Update语句来完成它,并像这样更新所有的行。 正在查找可能解决我问题的查询。请提前感谢。

一种方法如下:

SELECT ECode
    CAST(Duration/ 60 AS VARCHAR(10)) + '.' 
    + RIGHT('0' + CAST(Duration % 60 AS VARCHAR(2)), 2) AS Duration
FROM YourTable

也许是这样的:

ECode        Duration
101           3.06
102           24.06
103           18.36
WITH CTE
AS
(
    SELECT
        ECode,
        CAST(Duration AS INT) AS Duration
    FROM
        YourTable
)
SELECT
    SELECT CAST(Duration/ 60 AS VARCHAR(10)) + '.' 
    + RIGHT('0' + CAST(Duration % 60 AS VARCHAR(2)), 2) AS Duration
FROM
    CTE

尝试此查询时,我在sql server 2008中遇到一个设置错误,错误消息是“模运算符中的数据类型float和int不兼容”。@Dharmendra-听起来您的持续时间列是一个float?你可以尝试对一个INT应用一个转换持续时间-例如“CAST(Duration AS INT)”来代替我的示例中对“Duration”的每个引用。你应该能够用你的另一个问题中给出的示例来计算它。如果没有,请张贴您尝试过的内容以及遇到的问题。这看起来很像给我密码