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