How to format bigint field into a date in Postgresql?

前端 未结 4 1909
囚心锁ツ
囚心锁ツ 2020-12-14 05:34

I have a table with a field of type bigint. This field store a timestamp. I want to date format the field like this :

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


        
相关标签:
4条回答
  • 2020-12-14 06:12
    TO_CHAR(TO_TIMESTAMP(bigint_field / 1000), 'DD/MM/YYYY HH24:MI:SS')
    
    0 讨论(0)
  • 2020-12-14 06:23

    I did it like this:

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

    the result looks like this:

    2012-08-22 19:35:32

    you also can use this in you select statemant, just exchange the number with your database colunm.

    Step by Step Explanation:

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

    This will create a string like this:

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

    now we can easiely convert this into a timestamp:

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

    Result will look the same as before, but it's now a timestamp.

    Also, if you use this for a command like

    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; 

    you might end up with timstamptz (timestamp with time zone) instead of timestamp (timestamp without time zone). You can change it like this:

    ALTER TABLE table2 ALTER realDate SET DATA TYPE timestamp USING realDate;
    0 讨论(0)
  • 2020-12-14 06:24

    This depends on what the bigint value represents - offset of epoch time, or not.

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

    returns

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

    0 讨论(0)
  • 2020-12-14 06:27

    This is what worked for me

    to_timestamp( bigint_field/1000)::date
    
    0 讨论(0)
提交回复
热议问题