使用php MSSQL转换双时间格式

时间:2018-01-03 12:09:45

标签: php sql sql-server

我有一个问题,转换一个双倍的时间与PHP。我以前从未见过它。

这是excel的时间格式吗? 是否可以使用存储数据的mssql服务器来实现?

以下是一些时间示例。

0.291666666666667 = 07:00:00
0.229166666666667 = 05:30:00
0.320833333333333 = 07:42:00

1 个答案:

答案 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中是19000100119000101;只是为了让事情有点混乱)。每个完整的整数为日期时间0增加一天。因此,1的值为19000102519000106等,等等。

时间部分也是如此,但是,它们存储为小数部分。因此,0.5代表12小时。因此,值0.5代表19000101 12:00:00.0006.75将是19000107 18:00:00.000。使用Excel和Access,它们还将时间存储为小数(介于0和1之间)。因此,为什么上述工作,因为它首先将小数转换为datetime(对于第一个值19000101 07:00:00.000)然后转换为time(0)(0表示0毫秒精度);结果为07:00:00