使用php MSSQL转换双倍时间格式



我在这里有一个问题,要转换一个与 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中19000100119000101;只是为了让事情有点混乱)。每个完整整数都会向日期时间 0 添加额外的一天。因此,1的值是19000102的,519000106,等等,等等。

时间部分也是如此,但是,这些存储为小数部分。因此,0.5表示 12 小时。因此,0.5表示的值19000101 12:00:00.0006.7519000107 18:00:00.000.使用 Excel 和 Access,它们还将时间存储为小数(介于 0 和 1 之间)。 因此,为什么上述方法有效,因为它首先将小数转换为datetime(对于第一个值19000101 07:00:00.000),然后转换为time(0)(0 表示毫秒精度的 0 点);导致07:00:00.

最新更新