【问题标题】:SQL Date saved as Hex-value how to get it back into a Date-formatSQL 日期保存为十六进制值如何将其恢复为日期格式
【发布时间】:2016-04-29 10:02:04
【问题描述】:

大家好,stackoverflowers,

我遇到了一个小问题。

在一个表格中,我有一个列,其中包含一个日期,但它存储为一个十六进制值。

例如:

0xF2F84BF0F44BF2F0F1F6

我知道它背后有一个日期。

我试过了:

我在运行存储过程时将十六进制值存储在一个名为“@date”的变量中

SELECT Cast(@date as datetime)

但这给了我一个神秘版本的“o”背。

当我尝试使用 Convert(datetime,@date,103) 时,我收到一个错误,即二进制值无法转换为日期时间。

我希望有人可以帮助我。

问候 灵魂

【问题讨论】:

  • 如果您通过存储过程运行得到它,您可以看到数据是如何转换为 HEX 的。您能给我们提供这些信息吗?
  • 我使用存储过程处理数据,它不会通过存储过程放入表中。
  • 我同意艾伦的观点,您需要了解该十六进制值是如何生成的,它不是标准格式。如果您知道它应该在什么日期生产,您也许可以对其进行逆向工程。
  • 嗯 - 二进制数/十六进制的值对于日期时间类型来说似乎太高了,所以正在发生其他事情。
  • 我得到了这个声明的帮助:select * from openquery(server, 'select cast(DATUM as char(10) CCSID 273) as Verfalldatum from db');

标签: sql-server tsql date datetime


【解决方案1】:

我有一个可行的解决方案,如下:

select * from openquery(connectionserver, 'select cast(Date as char(10) CCSID 273) as wastedate from database');

【讨论】:

  • 我对德语翻译的猜测是过期日期,而不是浪费日期,但这看起来根本不像十六进制转换......
  • 老实说,谁在乎它是如何翻译的,它与所提出的问题或解决方案无关。好吧,如果您认为它不起作用,请尝试使用我在问题中所述的十六进制值。十六进制值来自 IBM iSeries AS400,大小为 10。后面是日期。
猜你喜欢
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
相关资源
最近更新 更多