Преобразование столбца TIMESTAMP в формате 12 HR в столбец Date с форматом 24 HR - PullRequest
0 голосов
/ 24 января 2019

В таблице у меня есть столбец TIMESTAMP в формате 12 HR, который я хочу преобразовать в столбец Date с форматом 24 HR.

Insert_Date

3-JAN-19 09.50.25.000000 AM 

23-JAN-19 08.54.37.000000 PM

Я попытался выполнить следующие действия:

to_char(Insert_Date,'YYYY-MM-DD HH:MI:SS')

Ожидаемый результат -

3-JAN-19 09.50.25

23-JAN-19 20.54.37

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Даты (и метки времени) не имеют формата - они представлены внутри 7 или 8 байтами для даты или 20 байтами для метки времени.Единственный раз, когда они форматируются, либо когда пользовательский интерфейс, который вы используете, неявно преобразует, то он может отображать что-то значимое для пользователя (например, при отображении оператора SELECT), либо когда пользователь явно преобразует его, используя TO_CHAR.

Учитывая это, вам не нужно менять какой-либо формат;просто CAST для другого типа данных:

SELECT CAST( your_timestamp_column AS DATE ) FROM your_table

Почему он отображает TIMESTAMP с использованием 12-часовых часов и DATE с использованием 24-часовых часов?

Потому что это то, что ваш пользовательский интерфейс имеет по умолчанию.

Для SQL / Plus и SQL Developer значения по умолчанию находятся в параметрах сеанса NLS пользователя:

SELECT parameter, value
FROM   NLS_SESSION_PARAMETERS
WHERE  parameter IN ( 'NLS_DATE_FORMAT', 'NLS_TIMESTAMP_FORMAT' );

Вы должны увидеть что-то вроде:

PARAMETER            VALUE
-------------------- ---------------------------
NLS_DATE_FORMAT      DD-MON-RR HH24:MI:SS
NLS_TIMESTAMP_FORMAT DD-MON-RR HH12:MI:SS.FF6 AM

Вы можете изменить их, используя:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD"T"HH24:MI:SS';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD"T"HH24:MI:SS.FF9';

Если, например, вы хотели их обоих в формате ISO8601.

0 голосов
/ 24 января 2019
CAST(timestamp_expression AS DATE);

например SELECT CAST(SYSTIMESTAMP AS DATE) FROM dual;

Для представления:

to_char(Insert_Date,'DD-MON-RR HH24:MI:SS')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...