How to format bigint field into a date in Postgresql?

68,608

Solution 1

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

Solution 2

This is what worked for me

to_timestamp( bigint_field/1000)::date

Solution 3

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"

Solution 4

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;
Share:
68,608
Stephan
Author by

Stephan

Fullstack web developper since 2002 with a preference for the backend part. Client technologies: jQuery 2+ (++), CSS 3 (+), HTML 4+ (++) Server technologies: Java 8 (+++), PHP 5 (+), Classic ASP (++), Spring 4+ (+) Database technologies: Postgresql (++), H2 database (++), Oracle (++), SQLite (+), MySQL (-) Here are the tools I use daily: Maven, Ubuntu 14+, Eclipse, pgAdmin III (yes, I don't like version 4), SQL Developper for Oracle

Updated on November 11, 2020

Comments

  • Stephan
    Stephan over 3 years

    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')

    I get the following error :

    ERROR: multiple decimal points
    État SQL :42601