Expert

Q:

20-21.

Use the FM (fill mode) format mask element to suppress padding and leading zeros. FM works like a toggle: the first occurrence in the format mask turns suppression on, the second turns it off, and so on. Here is an example:

DECLARE
   d DATE := TO_DATE ('01-MAY-1994', 'DD-MON-YYYY');
BEGIN
   -- Normal output
   DBMS_OUTPUT.put_line (TO_CHAR (d, 'Month DD, YYYY'));
   -- Suppress padding and leading zeros
   DBMS_OUTPUT.put_line (TO_CHAR (d, 'FMMonth DD, YYYY'));
   -- Suppress padding but display leading zeros (FM is a toggle)
   DBMS_OUTPUT.put_line (TO_CHAR (d, 'FMMonth FMDD, YYYY'));
END;

SQL> /
May       01, 1994
May 1, 1994
May 01, 1994

PL/SQL procedure successfully completed.

SQL>

Q:

20-22.

You can use the FX (format exact) format mask element to require that a date have a specific format (i.e., that it use hyphens as delimiters); the TO_CHAR function raises an exception if the string is not in the required format. If the passed string doesn’t contain the correct literal characters (e.g., hypens, slashes), TO_DATE raises the exception:

ORA-01861: literal does not match format string

If the string doesn’t have the expected date format (e.g., two-digit year instead of four, one-digit month instead of two, MONTH format instead of MON), TO_DATE raises the exception:

ORA-01862: the numeric value does not match the length of the format item Testing exact match for FXDD-MON-YYYY 21-MAY-1999 => Format Okay 01/MAY/1999 => ORA-01861: literal does not match format string 01-MAY-99 => ORA-01862: the numeric ...

Get Oracle PL/SQL Programming: A Developer's Workbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.