在SQL Server 2012中将时间转换为十进制

时间:2014-08-27 11:21:05

标签: sql time decimal

我在sql server 2012中有一个表,其中一列的时间数据类型包含以下数据, 你怎么把00:45:00兑换成0.45 还是01:45:00到1.45?

请帮忙。

3 个答案:

答案 0 :(得分:5)

你可以做算术,如:

 select cast(datepart(hour, col) + datepart(minute, col) / 100.00 as decimal(5, 2));

但正如评论中所述," 1.45"看起来很混乱。大多数人认为这应该是" 1.75"。如果你想要后者 - 精确到分钟 - 你可以这样做:

 select cast(datepart(hour, col) + datepart(minute, col) / 60.00 as decimal(5, 2));

答案 1 :(得分:4)

你知道1:45:00的十进制值是1.75h

如果您想将时间转换为十进制,请尝试此操作

select  datediff(second,0,'01:45:00') / (60.0 * 60.0)

但如果你的价值与你的要求相提并论,那就试试这种方式

select cast(datepart(hour, '01:45:00')+datepart(minute, '01:45:00') / 100.00 as decimal(7,4));

答案 2 :(得分:1)

从问题来看,似乎你只想用'。'删除':'。如果是这样,它可以在sql server 2012中以多种方式实现。下面是一个例子。

如果您的列是“日期时间”,请使用以下命令:     SELECT REPLACE(LEFT(CAST(DatetimeCol AS TIME),5),':',',')FROM Tbl

否则,如果它只是'时间',那么删除铸件。