【发布时间】:2012-08-20 07:15:38
【问题描述】:
我在用 PHP 处理 SQL Server 数据库转储时遇到问题。
我有一列名为datatime,其值如下:
0x0000a0af00d7f2eb
我需要在 PHP 中提取此列的日期和时间值。我没有可用的 SQL Server,所以我不能使用CAST(0x0000a0af00d7f2eb AS datetime) 的明显解决方案。
有人告诉我这个十六进制:0000a0af00d7f2eb 是由 4 个字节的日期和 4 个字节的时间创建的。
所以我知道:
当我将 0000a0af(前 4 个字节)更改为十进制时,我将得到 1900 年的天数。这很好。
但是当我尝试更改最后 4 个字节(所以应该有时间):00d7f2eb 到十进制时,我得到了一些我无法理解的东西。它应该是从午夜开始的时间,以毫秒为单位,有时这个值会低约 3 倍。
任何人都可以帮助将0000a0af00d7f2eb 转换为日期吗?我知道时间是早上 5 点到晚上 11 点之间,而这一天是上周。
【问题讨论】:
-
你试过选择 CAST(0x0000a0af00d7f2eb AS datetime) 吗?它给出了输出 2012-08-16 13:06:14.757,这就是你要找的吗?
-
可能不是完整的副本,但也可能有帮助:stackoverflow.com/questions/1143259/…
-
@rene 实际上,我认为这是一个完全相同的副本:OP 需要知道 datetime 的内部表示,以便他们可以在不使用 SQL Server 的情况下进行转换
标签: php sql-server datetime casting hex