Выбрать все столбцы с форматированием времени - PullRequest
3 голосов
/ 21 сентября 2019

У меня много столбцов, некоторые из них содержат метку времени.Я хочу получить все записи столбцов, кроме тех, которые имеют дату / время для форматирования:

Я знаю, что я могу получить все столбцы отдельно, но есть 20 столбцов, поэтому я хочу избежать:

select 
    id, 
    -- ... 19 other columns, 
    TO_CHAR(porh_received, 'YYYY-MM-DD HH24:MI:SS')
from pick_order_hist;

Я ожидаю что-то вроде этого:

select *, TO_CHAR(porh_received, 'YYYY-MM-DD HH24:MI:SS') from pick_order_hist;

, но это не работает.

1 Ответ

5 голосов
/ 21 сентября 2019

Опция 1

Одним из решений будет изменение настройки NLS вашего сеанса, которая управляет форматом по умолчанию, в котором возвращаются временные метки, в целевой формат временных меток.В зависимости от вашего реального типа данных это может быть любое из трех следующих:

alter session set nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SS';
alter session set nls_timestamp_tz_format = 'YYYY-MM-DD HH24:MI:SS';
alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';

Затем вы можете просто сделать:

SELECT * FROM pick_order_hist;

Недостатком этого подхода является то, что это изменяетформат по умолчанию для времени жизни вашего сеанса (или до тех пор, пока он не будет изменен на что-то другое).В зависимости от вашего варианта использования это может или не может быть тем, что вам нужно.

Вариант 2

В противном случае вы можете выбрать все столбцы с помощью *, изатем добавьте столбцы форматированных меток времени, используя псевдонимы столбцов в наборе результатов.Таким образом, вместо перечисления всех столбцов, вам просто нужно перечислить столбцы отметки времени.Недостатком является то, что вы получаете несколько дополнительных столбцов в наборе результатов, по одному для каждой неформатированной метки времени;Вы можете просто игнорировать их в своем приложении.

SELECT
    t.*, 
    TO_CHAR(porh_received, 'YYYY-MM-DD HH24:MI:SS') porh_received_with_format
FROM pick_order_hist t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...