#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)
*/