2014-08-27 127 views
-1

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

请大家帮忙。

+1

也许你可以做一个ATT抢先? – 2014-08-27 11:22:57

+7

只是一个问题,你知道1:45:00的十进制值是1.75h? :) – 2014-08-27 11:23:34

+0

你可以使用DATEPART(),然后实现自己的逻辑.... – Mithrandir 2014-08-27 11:23:44

回答

1

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

如果列是 '日期时间',使用此: SELECT REPLACE(LEFT(CAST(DatetimeCol随着时间),5), ':', '')FROM TBL

否则,如果它只是'时间“然后移除铸件。

+0

谢谢@anonxen。您的解决方案奏效万分感谢。 – 2014-08-27 11:38:07

4

你可以做算术题,如:

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)); 
2

你知道的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)); 
+0

这应该是被接受的答案。此外,如果您想根据分钟进行操作,您可以这样做: select datediff(分钟,0,'01:45:00')/ 60.0 – ejcortes 2015-12-02 19:14:34

相关问题