如何将bigint字段格式化为Postgresql中的日期?

时间:2011-03-30 11:09:22

标签: sql postgresql date timestamp bigint

我有一个类型为bigint的字段的表。该字段存储时间戳。 我希望日期格式化这样的字段:

to_char( bigint_field,'DD/MM/YYYY HH24:MI:SS')

我收到以下错误:

ERROR: multiple decimal points
État SQL :42601

4 个答案:

答案 0 :(得分:73)

TO_CHAR(TO_TIMESTAMP(bigint_field / 1000), 'DD/MM/YYYY HH24:MI:SS')

答案 1 :(得分:3)

这取决于bigint值代表什么 - 时间偏移量。或者不是。

select to_timestamp(20120822193532::text, 'YYYYMMDDHH24MISS')

返回

  

" 2012-08-22 19:35:32 + 00"

答案 2 :(得分:2)

我是这样做的:

to_timestamp(to_char(20120822193532, '9999-99-99 99:99:99'),'YYYY-MM-DD HH24:MI:SS')

结果如下:

  

2012-08-22 19:35:32

您也可以在选择statemant时使用它,只需将数字与数据库colunm交换。

逐步说明:

to_char(20120822193532, '9999-99-99 99:99:99')

这将创建一个这样的字符串:

  

" 2012-08-22 19:35:32"

现在我们可以轻松地将其转换为时间戳:

to_timestamp('2012-08-22 19:35:32','YYYY-MM-DD HH24:MI:SS')

结果与以前一样,但它现在是一个时间戳。

此外,如果您将此用作

之类的命令
CREATE TABLE table2 AS SELECT to_timestamp(to_char(tb1.date, '9999-99-99 99:99:99'),'YYYY-MM-DD HH24:MI:SS') AS realDate FROM table1 AS tb1; 

您最终可能会使用 timstamptz (时间戳 时区)而不是时间戳(时间戳 没有 时区)。您可以这样更改:

ALTER TABLE table2 ALTER realDate SET DATA TYPE timestamp USING realDate;

答案 3 :(得分:1)

这对我有用

to_timestamp( bigint_field/1000)::date