2012-03-01 32 views
2

我有一个表格,其持续时间作为包含分钟总和的列,我想将所有持续时间转换为HH:MM格式。
分钟通过更新查询转换为HH:MM格式

ECode  Duration 
101   186 
102   1446 
103   1116 

输出应该是这样的:

ECode  Duration 
101   3.06 
102   24.06 
103   18.36 

我想用一个更新语句来做到这一点,要更新所有这样的行。 寻找可能会削弱我的问题的查询。提前感谢。

+0

的可能重复[十进制转换为HH:MM转换](http://stackoverflow.com/questions/9513851/decimal-to-hhmm-conversion) – 2012-03-01 12:25:19

+1

你应该可以用你的其他问题给出的例子来解决它。如果没有,发布你已经尝试过的东西以及你卡在哪里。这开始看起来非常像*给我codez * – 2012-03-01 12:27:39

回答

1

也许是这样的:

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 
2

的一种方法如下:

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

我mGetting SQL Server 2008中的错误尝试此查询时,错误消息是“数据类型float和int在模运算符不兼容”。 – Dharmendra 2012-03-01 12:07:43

+0

@Dharmendra - 听起来像你的持续时间栏是FLOAT呢?您可以尝试在持续时间周围应用CAST - 例如, “CAST(Duration AS INT)”代替在我的例子中对“持续时间”的每个引用 – AdaTheDev 2012-03-01 12:28:27

相关问题