Sql server 如何转换存储为二进制的SQL Server日期(4)
我有一个旧的SQL Server数据库,其中日期编码为Sql server 如何转换存储为二进制的SQL Server日期(4),sql-server,date-conversion,Sql Server,Date Conversion,我有一个旧的SQL Server数据库,其中日期编码为binary(4)。存储在数据库中的值如下所示: 0xC3485749 0xC349023E 0xC3490300 0xC3492838 0xC349185F 0xC3491C2F 0xC349003F 0xC3491B4D 对于他们中的许多人,我知道这些值对应的实际日期,例如,0xC3485749is 24.04.19960xC349023E为22.05.2000 现在我需要将数据库导出到MS Access。我尝试了各种尝试,用conve
binary(4)
。存储在数据库中的值如下所示:
0xC3485749
0xC349023E
0xC3490300
0xC3492838
0xC349185F
0xC3491C2F
0xC349003F
0xC3491B4D
对于他们中的许多人,我知道这些值对应的实际日期,例如,0xC3485749
is 24.04.1996<代码>0xC349023E为22.05.2000
现在我需要将数据库导出到MS Access。我尝试了各种尝试,用convert将二进制(4)转换为人类可读的形式,例如:
CONVERT(date, myvariable, 104)
但结果是一个错误
从字符串转换日期和/或时间时转换失败
这些二进制字符串似乎不是编码文本-0xC3在大多数编码中甚至不是可打印字符 最可能的含义是一个数字值,表示某个“历元时间”——自某个固定点起的秒/分/等数。但从给出的两个例子来看,不清楚这是什么单位——差值是43765,但这些日期之间的差值是1487天或35688小时或2141280分钟或128476800秒 如果您能找到任何与插入或检索它们相关的源代码,您可以尝试反向工程 如果没有,你需要做一些调查。我建议您获取尽可能多的已知值,并将其放入电子表格:
- 将十六进制数值转换为十进制
- 将这些值按顺序排列,并确保已知日期的顺序与它们的数字顺序匹配——如果不匹配,我的猜测是错误的
- 查找已知日期的Unix时间戳(自UTC 1970-01-01午夜以来的秒数)
- 以神秘格式和Unix时间戳计算两对日期之间的差异
- 试着找到一个模式