У меня есть таблица ABC, в которой у меня есть столбец Z типа данных Date. Формат данных - ГГГГММДД. Теперь я хочу преобразовать указанный выше формат в формат YYYY-MON-DD. Кто-нибудь может помочь?
В снежинке, как преобразовать один формат даты в другой формат. С ГГГГММДД на ГГГГ-МН-ДД
Ответы (5)
Вы можете использовать to_char
TO_CHAR(Z,'YYYY-MON-DD')
В зависимости от того, какова цель переформатирования, вы можете либо явно привести его к VARCHAR / CHAR и определить формат, либо вы можете изменить свой формат отображения, чтобы вы хотели видеть все даты:
ALTER SESSION SET DATE_OUTPUT_FORMAT = 'YYYY-MON-DD';
Важно понимать, что если данные находятся в поле ДАТА, они сохраняются как дата, а формат даты зависит от ваших предпочтений просмотра, а не от того, как они хранятся.
Поскольку значение поля даты хранится в виде числа, вам необходимо преобразовать его в дату.
ALTER SESSION SET DATE_OUTPUT_FORMAT = 'ГГГГ-МН-ДД';
выберите to_date (to_char (z), 'ГГГГММДД');
(добавление этого ответа для обобщения и решения вопроса - поскольку подсказки и ответы разбросаны по комментариям)
- В вопросе указано, что столбец
Z
относится к типуDATE
, но на самом деле это похоже наNUMBER
. - Затем, прежде чем анализировать число типа
20201017
на дату, сначала вам нужно преобразовать его вSTRING
. - Как только исходное число преобразовано в дату, его можно представить в виде новой строки, отформатированной по желанию.
WITH data AS (
SELECT 20201017 AS z
)
SELECT TO_CHAR(TO_DATE(TO_CHAR(z), 'YYYYMMDD'), 'YYYY-MON-DD')
FROM data;
# 2020-Oct-17
Я не ожидаю, что он будет работать лучше, но добавлю его туда. Вы в основном разделяете год, месяц и день и соединяете их вместе в желаемом формате.
set z='20200101';
select to_char((left($z,4) ||'-'|| substr($z,5,2) ||'-'|| right($z,2))::date,'YYYY-MON-DD')