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

Jac*_*pes 0 sql time decimal

我在sql server 2012中有一个表,其中一列的时间数据类型具有以下数据,如何将00:45:00转换为0.45或01:45:00为1.45?

请帮忙.

Gor*_*off 6

你可以做算术,如:

 select cast(datepart(hour, col) + datepart(minute, col) / 100.00 as decimal(5, 2));
Run Code Online (Sandbox Code Playgroud)

但正如评论中所指出的那样,"1.45"似乎令人困惑.大多数人认为这应该是"1.75".如果你想要后者 - 精确到分钟 - 你可以这样做:

 select cast(datepart(hour, col) + datepart(minute, col) / 60.00 as decimal(5, 2));
Run Code Online (Sandbox Code Playgroud)


Hir*_*yak 6

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

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

select  datediff(second,0,'01:45:00') / (60.0 * 60.0)
Run Code Online (Sandbox Code Playgroud)

但是,如果您按照您的要求获得价值,那么请尝试这种方式

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