Как отформатировать поле bigint в дату в Postgresql?
у меня есть таблица с полем типа bigint. В этом поле хранится метка времени. Я хочу датировать формат поля следующим образом:
to_char( bigint_field,'DD/MM/YYYY HH24:MI:SS')
Я получаю следующую ошибку :
ERROR: multiple decimal points État SQL :42601
3 ответов
Это зависит от того, что представляет значение bigint - смещение времени эпохи или нет.
select to_timestamp(20120822193532::text, 'YYYYMMDDHH24MISS')
возвращает
"2012-08-22 19:35:32+00"
Я сделал это так:
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;