Intereting Posts
Использовать внешний ключ в представлении SQL в Entity Framework Установка DotNetNuke: сбой подключения к базе данных sql: как я могу скопировать значение из таблицы в другую? Как заставить Oracle создавать инструкцию таблицы в SQL * Plus Как я могу предоставить имя таблицы для запроса в качестве параметра команды в Npgsql? Почему мое левое соединение не возвращает нули? Каков наилучший способ представления «повторяющихся событий» в базе данных? Как оптимизировать запрос, содержащий объединения и подзапросы Вставьте несколько строк, используя один оператор insert в Access 2010 SQL: возвращает только записи без каких-либо ассоциаций, соответствующих критериям Entity Framework 4.0 – сгенерируйте сценарий изменений Что случилось с моим CASE? Как преобразовать этот собственный SQL-запрос в HQL Преобразование двоичного поля идентификатора в текст Оптимизация триггера SQLite

Как форматировать поле bigint в дату в Postgresql?

У меня есть таблица с полем типа bigint. Это поле хранит метку времени. Я хочу направить формат поля следующим образом:

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

Я получаю следующую ошибку:

 ОШИБКА: несколько десятичных точек
 État SQL: 42601

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

Это зависит от того, что представляет значение 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;