Sql server 如何转换存储为二进制的SQL Server日期(4)

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

我有一个旧的SQL Server数据库,其中日期编码为
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时间戳计算两对日期之间的差异
  • 试着找到一个模式

我无法立即看到您给出的示例的任何逻辑,因此SQL Server不能做到这一点并不奇怪。假设你理解了它们,你能在问题下面点击并给出你用手解码它们的步骤吗?