【问题标题】:Postgresql cast hexadecimal to timestamp (when migrating from SQL Server)Postgresql 将十六进制转换为时间戳(从 SQL Server 迁移时)
【发布时间】:2018-06-01 16:50:04
【问题描述】:

在将 SQL Server 插入查询解析到 PostgresSQL 时,我遇到了以下问题。在对查询进行必要的更改以使 SQL 语句正常工作后,我在使用 CAST() 函数时遇到了一些问题。

CAST(x00009DD500000000 AS timestamp)
  1. 如果我写CAST(0x000....),pgAdmin说x附近有语法错误

  2. 如果我删除 0,我会收到该列不存在的错误

我认为这可能是列数的错误,但由于我正在处理大量数据并且我无法在 postgresql 中看到将十六进制转换为时间戳的函数,所以我想知道这是否会导致其他类型的错误。也许吧?

Postgresql 中是否有将十六进制值转换为时间戳的函数?

因为将十六进制值转换为另一种类型的数据需要很长时间。

提前致谢!

【问题讨论】:

  • x00009DD500000000 应该是什么样的“时间戳”?
  • 不幸的是,postgresql 唯一可以将十六进制转换为 bytea。

标签: database postgresql type-conversion sql-insert


【解决方案1】:

此时间戳记法是特定于 MSSQL 的。它有两个部分:

  • 日期部分 - 自 1900-01-01 以来的天数
  • 时间部分 - 精度为 1/300 秒

在 PostgreSQL 中这个值没有自动转换。 您可以在这里找到确切的解决方案: how to cast the hexadecimal to varchar(datetime)?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-21
    • 2015-03-12
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    相关资源
    最近更新 更多