首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL server 2012中将时间转换为十进制

问在SQL server 2012中将时间转换为十进制
EN

Stack Overflow用户
提问于 2014-08-27 19:21:05
回答 3查看 18.3K关注 0票数 0

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

请帮帮忙。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-27 19:26:12

从问题看,你似乎只想用'.‘去掉':’。如果是这样,在SQL Server 2012中可以通过多种方式来实现。下面是一个例子。

如果您的列是“Datetime”,请使用以下内容:

代码语言:javascript
复制
SELECT REPLACE(LEFT(CAST(DatetimeCol AS TIME),5),':',',') FROM Tbl

否则,如果只是“时间”,那么删除强制转换。

票数 1
EN

Stack Overflow用户

发布于 2014-08-27 19:30:30

你可以做如下算术运算:

代码语言:javascript
复制
 select cast(datepart(hour, col) + datepart(minute, col) / 100.00 as decimal(5, 2));

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

代码语言:javascript
复制
 select cast(datepart(hour, col) + datepart(minute, col) / 60.00 as decimal(5, 2));
票数 10
EN

Stack Overflow用户

发布于 2014-08-27 19:32:53

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

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

代码语言:javascript
复制
select  datediff(second,0,'01:45:00') / (60.0 * 60.0)

但是,如果您获得了与您的需求相同的价值,那么可以尝试这种方式

代码语言:javascript
复制
select cast(datepart(hour, '01:45:00')+datepart(minute, '01:45:00') / 100.00 as decimal(7,4));
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25525845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档