【发布时间】:2021-12-17 19:34:03
【问题描述】:
如何在 PostgreSQL 12 中将此字符串转换为 int8?
2021-10-18T17:45:22Z
我试过了:
TO_TIMESTAMP('2021-10-18T17:45:22Z'::text,'YYYY-MM-DD hh:mm:ss ')::int8
to_char('2021-10-18T17:45:22Z', 'YYYY-MM-DD hh:mm:ss ')::integer
以及其中的一些变体,但没有任何成功。
输入字符串无法更改,因为它是由外部软件以这种方式传递的。
【问题讨论】:
-
那个整数应该是什么意思?除 SQLite 之外的所有数据库中的日期都是单独的二进制类型,而不是字符串。几乎所有语言也都有日期类型,因此没有理由将日期转换为其他类型
-
至于
2021-10-18T17:45:22Z,这不仅仅是一个日期,它是一个带有偏移量的日期。这代表每个时区的不同时间。删除偏移量会丢失重要信息 -
@PanagiotisKanavos 最后的 Z 代表祖鲁时区,即 UTC。所以它可以安全地省略,因为时间戳默认存储在 UTC 中
-
@Patrick 我知道这意味着什么,以及这些默认值如何不是真的。检查Falsehoods programmers believe about time
标签: postgresql datetime type-conversion epoch