在我的应用程序的时间信息都存储在数据库中的浮点型字段,其中:在0-1范围内转换浮点数时间
0 means 0 AM;
0.5 12 AM
0,999305555555556 is 11:59 PM
转换成时间信息,目前在我的应用程序的用户界面完成组件被设计为以这种方式工作来将时间信息保存为float(这是在SQL Server 2008R2中引入TIME数据类型之前决定的)。
我的问题是:
如何执行此转换?
在我的应用程序的时间信息都存储在数据库中的浮点型字段,其中:在0-1范围内转换浮点数时间
0 means 0 AM;
0.5 12 AM
0,999305555555556 is 11:59 PM
转换成时间信息,目前在我的应用程序的用户界面完成组件被设计为以这种方式工作来将时间信息保存为float(这是在SQL Server 2008R2中引入TIME数据类型之前决定的)。
我的问题是:
如何执行此转换?
分钟有60秒,
小时有3600秒;
一天都有86400秒,
乘以86400(我们称之为total_seconds)你的(0-1)浮动,
1)通过3600 total_seconds的分割地板将是您小时
2)减去小时* 3600从total_seconds
3)由60 total_seconds的分割地板将是您分钟
4)减去分钟* 60从total_seconds
6)剩下的是什么将是你秒
DECLARE @raw_input FLOAT = 0.999305555555556
DECLARE @total_seconds INT
DECLARE @hours INT, @minutes INT, @seconds INT
SET @total_seconds = @raw_input * 86400
SET @hours = FLOOR(@total_seconds/3600)
SET @total_seconds = @total_seconds - @hours * 3600
SET @minutes = FLOOR(@total_seconds/60)
SET @seconds = @total_seconds - @minutes * 60
编辑:或者更简单,适应类似question/answer:
DECLARE @raw_input FLOAT = 0.999305555555556
DECLARE @secondss decimal = @raw_input*86400
SELECT CAST(CONVERT(VARCHAR,DATEADD(SECOND, @secondss, 0),108) AS TIME)
>23:59:00.0000000
非常感谢!更简单的版本是完美的工作正常! – LaBracca
ERRM ....你不是一个谁知道如何将float转换为时间,因为你的应用程序已经在UI层完成它了吗? –
检查UI组件代码? – Magnus
我的应用程序自15年起“按原样”工作,这是我第一次需要用sql查询rime信息进行检索。到目前为止,将这个任务委托给UI层是很方便的。现场也有时做简单的块。我个人发现你的评论没有用。感谢您花时间阅读。 – LaBracca