Funzione TO_DATE

La funzione di conversione TO_DATE converte un CHAR nel tipo di dato DATE.
Non converte nei tipi di dato INTERVAL e TIMESTAMP.

S i n t a s s i
TO_DATE( stringa , [ 'machera di formato'] , [nls_parameter] )

E s e m p i o
SELECT TO_DATE('2012-09-10 15:35:21','yyyy-mm-dd hh24:mi:ss') FROM DUAL;
restituisce 2012-09-10 15:35:21

Se la maschera di formato è omessa Oracle analizzerà la stringa usando i valori di default delle date definito dai parametri NLS_TERRITORY e NLS_DATE_FORMAT.

La maschera fx specifica che deve esserci una esatta uguaglianza tra la stringa e la maschera di formato.
Ad esempio se c'è uno spazio prima di 04:
SELECT TO_DATE(' 04-MAG-2012', 'DD-MON-YYYY') FROM DUAL;
Risultato:
04-05-2012 00:00:00
SELECT TO_DATE(' 04-MAG-2012', 'fxDD-MON-YYYY') FROM DUAL;
ORA-01858: è stato trovato un carattere non numerico al posto di uno numerico
01858. 00000 -  "a non-numeric character was found where a numeric was expected"

Idem per l'esempio seguente:
SELECT TO_DATE('04/MAG/12 ', 'fxDD-MON-YYYY') FROM DUAL;

Se invece dell' anno 2012 si inserisce 12 utilizzando fx, Oracle avverte che non si sta rispettando il formato:
SELECT TO_DATE('04-MAG-12 ', 'fxDD-MON-YYYY') FROM DUAL;
ORA-01862: il valore numerico non corrisponde alla lunghezza dell'elemento del formato
01862. 00000 -  "the numeric value does not match the length of the format item

La maschera J indica il Julian Day che sono una misura dei numeri di giorni dal 1 gennaio 4712 BC. Questo parametro obbliga la stringa ad essere un valore intero.

Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database