The query
SELECT STATE, START_DATE "START DATE" FROM DBA_SCHEDULER_JOBS WHERE OWNER = 'SYS' AND JOB_NAME = 'PURGE_ALL_AUDIT_TRAILS';
would return
STATE START DATE --------- -------------------------------- SCHEDULED 02.07.2014 13:351:16,558701 +02:00and I simply didn't want to display that level of information. When trying to format the string as follows:
TO_DATE(START_DATE,'DD.MM.YYYY HH24:MI:SS') "START DATE"
I ran into the error:
TO_DATE(START_DATE,'DD.MM.YYYY HH24:MI:SS') "START DATE" * ERROR at line 2: ORA-01830: date format picture ends before converting entire input string
Workaround:
In your session, set
ALTER SESSION SET NLS_TIMESTAMP_FORMAT='DD.MM.YYYY HH24:MI:SS'; ALTER SESSION SET NLS_DATE_FORMAT='DD.MM.YYYY HH24:MI:SS';
Then cast the data type from TIMESTAMP WITH TIMEZONE to TIMESTAMP:
CAST(START_DATE AS TIMESTAMP)and finally, convert to DATE:
TO_DATE(CAST(START_DATE AS TIMESTAMP),'DD.MM.YYYY HH24:MI:SS')Put together:
SELECT STATE, TO_DATE(CAST(START_DATE AS TIMESTAMP),'DD.MM.YYYY HH24:MI:SS') "START DATE" FROM DBA_SCHEDULER_JOBS WHERE OWNER = 'SYS' AND JOB_NAME = 'PURGE_ALL_AUDIT_TRAILS';Output:
STATE START DATE --------------- ------------------------------ SCHEDULED 02.07.2014 13:51:16Another example that worked for me was against a column defined like this:
DATELASTUPDATED TIMESTAMP(6) NOT NULL,In my resultset I would only like dates from 29.12.2016, the time of the day is not interesting. Simply use the fuction TRUNC:
WHERE trunc(DateLastUpdated) = '29.12.2016'