【问题标题】:Date in Excel from SQL来自 SQL 的 Excel 中的日期
【发布时间】:2017-04-05 07:11:55
【问题描述】:

我有一个用逗号分隔的文本文件创建的 excel,该文件最初来自一个带有 SQL INSERT 查询的 .sql 文件。

在我的其中一列中:“Cast(0x123456AB...) As TIME 显然这不是 jsondate 格式......所以这个问题没有帮助......

我用空字符串替换了 Cast( 并替换了 ") As TIME"。

所以现在我有了十六进制的时间值。

如何将它们转换为 Excel 时间或日期时间?

【问题讨论】:

  • 显然这不是 javadate,但可能类似。会玩这个。
  • =HEX2DEC(Cell) 并将单元格/列格式化为日期。这将转换为十进制并将其格式化为日期将采用十进制日期。
  • 不,这还不够。看我自己的答案...

标签: sql excel datetime type-conversion


【解决方案1】:

OK 玩弄它告诉我它与 jquery 日期答案完全相同。你取以 0x 开头的数字部分。

  1. 取 0x 之后的 10 位数字。例如在 A2 中:=MID(A1, 3, 10)

  2. 将其转换为十六进制,例如在 A3 中:= HEX2DEC(A2)

  3. 除以 86400 例如A4:=A3/86400

  4. 并将结果添加到 1970 年 1 月 1 日的日期。例如= A5:=A4 + Date(1970, 1, 1)

或者简而言之:

=(hex2dec(mid(a1,numstart,10))/86400) + date(1970,1,1)

numstart 替换为数字的从 1 开始的索引。

例如3 如果您有 12 位或 13 位数字,例如 0x12345678AB,您将获得 12345678AB

这类似于Convert JSON Date /Date(1388624400000)/ to Date in Excel

除了:

一个。这个问题被错误地回答了,并且不起作用。 (我编辑过)

b. .sql 文件是在存储过程中通过 SQL 从数据库中检索的。在问题中,他们使用 jquery 返回了 ajax 数据,这似乎有所不同。原来它们是相同的数字,但格式不同。

作为补充说明,我在十六进制数字的开头有一个空格标记。直到我对它做了 MID,我才看到它。

注意:当使用 ajax 返回的格式化日期(如 /date:0x12345678ab/)时,您会将 numstart 设置为 8。如果 hex2dec 失败,请尝试将十六进制字符串转换为大写 在调用 hex2dec 之前。要进行调试,只需将每个公式放在一个单独的单元格中,这样您就可以看到哪些有效,哪些无效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-24
    • 2016-04-02
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    相关资源
    最近更新 更多