我们如何在 PostgreSQL 中转换给定的日期时间格式?

How can we convert a given datetime format in PostgreSQL?

我有一个日期时间列,格式如下:

2019-11-10-07.10.55.865000

我希望我的格式如下:

2019-11-10 07:10:55.865000

如何在 PostgreSQL 9.6.11 中执行此操作?

to_char(timestamp, text)功能,例如to_char(current_timestamp, 'HH12:MI:SS')

https://www.postgresql.org/docs/current/functions-formatting.html

我们可以尝试从文本到时间戳的完整往返,然后再次返回文本:

SELECT
    TO_CHAR(TO_TIMESTAMP('2019-11-10-07.10.55.865000', 'YYYY-MM-DD-HH.MI.SS.US'),
        'YYYY-MM-DD HH:MI:SS.US') AS ts_out;

这输出:

2019-11-10 07:10:00.865000

Demo

作为旁注,您首先应该认真考虑 而不是 将时间戳存储为文本。理想情况下,如果您想以某种方式查看时间戳列,例如出于报告目的,您只需要使用您要使用的格式掩码对 TO_CHAR 进行一次调用。