Используйте TO_DATE
, затем TO_CHAR
:
SELECT TO_CHAR(
TO_DATE(
'Thu Jan 01 01:00:00 UZT 1970',
'Dy Mon DD HH24:MI:SS "UZT" YYYY'
),
'Dy Mon YYYY'
) AS substring
FROM DUAL
| SUBSTRING |
| :----------- |
| Thu Jan 1970 |
db <> fiddle здесь
Если вы хотитекак формат DD-MM-YYYY
, затем измените модель формата, используемую в TO_CHAR
на 'DD-MM-YYYY'
, но если вы собираетесь хранить ее в базе данных, было бы лучше просто сохранить ее как значение даты, а не как отформатированную строку.
У меня есть несколько столбцов "UZT" и несколько "UZST", тогда я получаю сообщение об ошибке "UZST"
Если это единственные часовые пояса, и выНе беспокойтесь, если между двумя зонами будет разница в часах, вы можете использовать:
SELECT TO_CHAR(
TO_DATE(
REPLACE( your_column, 'UZST', 'UZT' ),
'Dy Mon DD HH24:MI:SS "UZT" YYYY'
),
'Dy Mon YYYY'
) AS substring
FROM your_table
или если вам необходимо учесть часовые пояса (замените значения часовых поясов соответствующим образом):
SELECT TO_CHAR(
TO_TIMESTAMP_TZ(
REPLACE(
REPLACE(
your_column,
'UZST',
'+05:00'
),
'UZT',
'+05:00'
),
'Dy Mon DD HH24:MI:SS TZH:TZM YYYY'
) AT TIME ZONE '+05:00',
'Dy Mon YYYY'
) AS substring
FROM your_table