我有一个问题,转换一个双倍的时间与PHP。我以前从未见过它。
这是excel的时间格式吗? 是否可以使用存储数据的mssql服务器来实现?
以下是一些时间示例。
0.291666666666667 = 07:00:00
0.229166666666667 = 05:30:00
0.320833333333333 = 07:42:00
答案 0 :(得分:2)
猜猜那些时候?使用CONVERT
:
WITH VTE AS(
SELECT *
FROM (VALUES(0.291666666666667),(0.229166666666667),(0.320833333333333))V(T))
SELECT T, CONVERT(time(0), CONVERT(datetime, t)) AS TimeValue
FROM VTE;
(2次转换,因为您无法直接从decimal
转换为time
编辑:Excel(和sql server)中的日期时间值实际上存储为数字。 SQL Server中datetime
的值为19000101
(如果我没记错的话,0
在Excel / Access中是19000100
而1
是19000101
;只是为了让事情有点混乱)。每个完整的整数为日期时间0增加一天。因此,1
的值为19000102
,5
为19000106
等,等等。
时间部分也是如此,但是,它们存储为小数部分。因此,0.5
代表12小时。因此,值0.5
代表19000101 12:00:00.000
。 6.75
将是19000107 18:00:00.000
。使用Excel和Access,它们还将时间存储为小数(介于0和1之间)。因此,为什么上述工作,因为它首先将小数转换为datetime
(对于第一个值19000101 07:00:00.000
)然后转换为time(0)
(0表示0毫秒精度);结果为07:00:00
。