Ho appena rilevato un comportamento strano della funzione oracle TO_DATE quando utilizzato con il parametro format_mask.Oracle TO_DATE NON errore di lancio
Fondamentalmente, quello che vedo è che in un caso ignora la maschera di formattazione data, e analizza l'input con la propria maschera, e in altri casi genera un'eccezione.
esempio I atteso comportamento - Errore gettato:
SELECT TO_DATE('18-02-2016', 'DD/MON/YYYY') FROM dual
ORA-01843: non un mese valido
Esempio II ANOMALO - Data analizzata:
SELECT TO_DATE('18-feb-2016', 'DD/MM/YYYY') FROM dual
18 febbraio 2016 00:00:00
non riesco a vedere alcuna osservazione di questo nel docs, quindi mi chiedo se questo incostincency legato alla progettazione o è bug o forse non sto capire qualcosa corretta?
Modifica: Guardando le risposte, posso essere d'accordo sul fatto che sia molto probabilmente di progettazione. Ma quello che viene fatto qui sembra pericolosamente "automatico" per me.
Cosa succede se il formato verrà interpretato (indovinato da oracle) in modo errato? C'è qualche documentazione su cosa sta succedendo esattamente qui, quindi posso essere sicuro che sia sicuro?
La mia domanda sarebbe: posso spegnere? La mia unica opzione è la convalida del formato da solo?
mi sono preso la libertà di correre i frammenti e la modifica della domanda di includere uscita effettiva. Penso che potrebbe essere rilevante ottenere "ORA-01843: non un mese valido" e non "ORA-01830: l'immagine in formato data termina prima di convertire l'intera stringa di input" o qualcos'altro. –