Comment formater le champ bigint dans une date dans Postgresql?

J'ai une table avec un champ de type bigint. Ce champ stocke un horodatage. Je veux dater le champ comme ceci:

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

Je reçois l'erreur suivante:

ERROR: multiple decimal points
État SQL :42601
33
demandé sur Stephan 2011-03-30 15:09:21

3 réponses

TO_CHAR(TO_TIMESTAMP(bigint_field / 1000), 'DD/MM/YYYY HH24:MI:SS')
64
répondu Quassnoi 2011-03-30 12:12:05

Cela dépend de ce que représente la valeur bigint-décalage du temps d'époque, ou non.

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

Renvoie

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

3
répondu Jordan K 2012-08-23 07:43:53

, je l'ai fait comme ceci:

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

, Le résultat ressemble à ceci:

2012-08-22 19:35:32

Vous pouvez également l'utiliser dans vous sélectionnez statemant, il suffit d'échanger le numéro avec votre base de données colunm.

Explication étape par Étape:

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

Cela va créer une chaîne comme ceci:

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

Maintenant, nous pouvons facilement convertir cela en un horodatage:

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

Résultat sera le même qu'avant, mais c'est maintenant timestamp.

Aussi, si vous l'utilisez pour une commande comme

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; 

, vous pourriez Vous retrouver avec timstamptz (timestamp avec fuseau horaire) à la place de timestamp (timestamp sans fuseau horaire). Vous pouvez le changer comme ceci:

ALTER TABLE table2 ALTER realDate SET DATA TYPE timestamp USING realDate;
1
répondu Th3NetForc3 2017-01-06 13:50:21