我在这里有一个问题,要转换一个与 php 双倍的时间。我以前从未见过它。
这是 excel 中的时间格式吗? 是否可以使用存储数据的 mssql 服务器执行此操作?
以下是一些时间示例。
0.291666666666667 = 07:00:00
0.229166666666667 = 05:30:00
0.320833333333333 = 07:42:00
猜那些是时间?使用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服务器)中的日期时间值实际上存储为数字。SQL Server中datetime
的值为019000101
(如果我没记错的话,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
.