Use double quotes around the literal characters inside the format model and use TO_TIMESTAMP_TZ with the TZH:TZM format models to match the time stamp (and use FF to match the fractional seconds and HH24 for a 24 hour clock):
select to_char(
to_timestamp_tz(
'2021-09-07T18:24:25.075+02:00',
'yyyy-mm-dd"T"hh24:mi:ss.ffTZH:TZM'
),
'dd.mm.yyyy hh24.mi.ss'
) AS timestamp
from dual
Outputs:
| TIMESTAMP |
| 07.09.2021 18.24.25 |
db<>fiddle here
You asked in comments:
Gotta deal with an ORA-01830 "Oracle date format picture ends before converting entire input string" error now though. ... That is, when I switch the timestamp string with the column I try to convert
From Oracle 12, you can use:
select to_char(
to_timestamp_tz(
column_name
DEFAULT NULL ON CONVERSION ERROR,
'yyyy-mm-dd"T"hh24:mi:ss.ffTZH:TZM'
),
'dd.mm.yyyy hh24.mi.ss'
) AS timestamp
from table_name
Then all the values in the column that do not match your format model will return values of NULL. You can use this for debugging and find the rows with invalid data.
I.e.
select column_name
from table_name
WHERE to_timestamp_tz(
column_name
DEFAULT NULL ON CONVERSION ERROR,
'yyyy-mm-dd"T"hh24:mi:ss.ffTZH:TZM'
) IS NULL;