Небольшая помощь для правильной даты час: минута, как Oracle для Postgresql

#oracle #postgresql

#Oracle #postgresql

Вопрос:

В моей базе данных Oracle я выбираю этот запрос

 17-DIC-20 18:33:24  |Title1                  |1980        |Thriller        |1:30      |Divx      |Eng
 

То же самое, что я сделал на Postgres

  3765 | Title1 | 1992 | Thriller | 1:30   | Divx | Eng | 2020-12-17 18:20:07.784068 | 2020-12-17 18:20:07.784068
 

Мне действительно не нравится формат столбца 18:20:07.784068, и я предпочитаю что-то вроде

 2020-12-17 18:20:07
 

Итак, я воссоздаю представление, изменяющее столбец

 video=# drop view gener2;
DROP VIEW


video=# create view gener2 as SELECT title.idtitle,
    title.title,
    title.year,
    genre.genre,
    lenght.lenght,
    type.type,
    lang.lang,
cast (title.time as date) FROM title,
    genre,
    lenght,
    type,
    lang
  WHERE title.genre = genre.idgenre AND title.lenght = durata.iddurata AND title.type = type.idtype AND title.lang = lang.idlang                                                                                                                        ORDER BY title.idtitle;
CREATE VIEW

video=# select * from gener2  offset 3031 limit 1 ;
3765 | Title1 | 1992 | Thriller | 1:30   | Divx | Eng | 2020-12-17
 

Мой простой вопрос … как получить правильный формат, подобный этим примерам?

 2020-12-17 18:30
2020-12-17 16:33
2020-12-17 14:55
 

Я создал столбец Oracle с этим значением

 TIMESTAMP(0) DEFAULT SYSDATE NOT NULL;
 

Комментарии:

1. Это один из способов: выберите to_char(now(),’ГГГГ-ММ-ДД ЧЧ24: МИ’)

2. добавьте в качестве ответа, пожалуйста, чтобы я мог закрыть вопрос

3. 1) Создайте столбец Postgres таким же образом TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP NOT NULL 2) Приведите существующее поле к исключению дробных секунд : select timestamp_fld::timestamp(0) .

Ответ №1:

Это один из способов: select to_char(now(),'YYYY-MM-DD HH24:MI')

Ответ №2:

Вы можете перенести столбец oracle TIMESTAMP(0) DEFAULT SYSDATE NOT NULL; как timestamp(0) not null default now() .

Вы также должны проверить свои настройки локали и форматирования. Вы можете установить конфигурацию LC_TIME "en_US" либо в конфигурации PostgreSQL (для всех пользователей по умолчанию), либо в вашем сеансе (или, может быть, только в транзакции)

Вот пример;

 --test format without data
set LC_TIME to "en_US";  -- or "C" which is same in this case
select now()::timestamp(0);

-- test format with data
create table foo (
 id serial,
 bar timestamp(0) not null default now()
);
insert into foo DEFAULT VALUES;
select * from foo;

/*
Sample result
---------------------
 2020-12-17 21:53:57
(1 row)
*/