使用 php MSSQL 转换双倍时间格式 [关闭]
Posted
技术标签:
【中文标题】使用 php MSSQL 转换双倍时间格式 [关闭]【英文标题】:Convert double timeformat with php MSSQL [closed] 【发布时间】:2018-01-03 12:09:44 【问题描述】:我在这里遇到一个问题,用php转换一个双倍的时间。我以前从未见过。
这是excel的时间格式吗? 是否可以使用存储数据的mssql服务器来做到这一点?
以下是一些时间示例。
0.291666666666667 = 07:00:00
0.229166666666667 = 05:30:00
0.320833333333333 = 07:42:00
【问题讨论】:
这些数字是什么意思?你有相应的日期吗?正如您提到的 Excel,也许其他日期格式被错误地转换为数字(因为 Excel 不了解原始格式)? 快速谷歌搜索似乎表明它可能来自 MS Access:support.microsoft.com/en-us/help/210276/… 【参考方案1】:猜那是时代?使用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
的值 0 是 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
。
【讨论】:
谢谢你的解决方案 @Andy 那么请标记它。 :) 我需要等 3 分钟 :-) 也为你添加了一点解释。 @andytime
以 24 小时格式显示。您提供的所有值均在 12:00 之前。以上是关于使用 php MSSQL 转换双倍时间格式 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP 将 mysql 数据库导出/转换为 mdb 格式 [关闭]
我想在 jquery 中使用碳格式时间,但我不知道如何将 jquery 数据转换为 php [关闭]