Convert DATE or TIMESTAMP columns to human-readable text with TO_CHAR and format models.
TO_CHAR converts DATE or TIMESTAMP columns to formatted strings, letting you control separators, month names, time-zones, and locale. Reports, CSV exports, and APIs read these strings easily.
Oracle format models such as 'YYYY-MM-DD', 'DD-MON-YYYY', 'HH24:MI:SS', and 'YYYY-MM-DD"T"HH24:MI:SS"Z"' cover ISO, US, and RFC patterns. Combine elements to suit any specification.
SELECT TO_CHAR(order_date, 'YYYY-MM-DD') AS iso_date
FROM Orders;
SELECT TO_CHAR(order_date_at,
'YYYY-MM-DD"T"HH24:MI:SS TZH:TZM') AS order_ts
FROM Orders;
TZH and TZM append hours and minutes of the time-zone offset.
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
The new setting applies to all implicit DATE-to-string conversions until the session ends.
SELECT TO_CHAR(order_date, 'YYYY-MM-DD HH24:MI:SS.FF3')
FROM Orders;
FF1–FF9 print 1–9 fractional-second digits.
Use explicit TO_CHAR in views, APIs, and reports. Avoid relying on client NLS settings. Document format models and test edge cases such as leap years and daylight-saving shifts.
Yes. TO_CHAR handles both data types. Use separate format models inside the same SELECT list.
Include NLS_DATE_LANGUAGE in the third parameter: TO_CHAR(order_date,'DD Month','NLS_DATE_LANGUAGE=ITALIAN').
Formatting occurs after data retrieval, so indexes on date columns are still used. Applying TO_CHAR in predicates, however, prevents index usage; compare raw dates instead.