Divida a consulta em partes individuais e depois entenda.
subst e até_data são as duas funções que estão sendo usadas.
- Extraindo a substring necessária, substr('2/2/2015 9:20:06 AM',1,9)
- Aplicando
TO_DATE
sobre a saída da etapa 1, TO_DATE(substr('2/2/2015 9:20:06 AM',1,9),'mm/dd/yyyy') . - E é isso.
Então, em sua consulta postada,
'DD-MON-YY'
máscara de formato não é necessária. Além disso, o que você está tentando alcançar é equivalente a:
TRUNC(TO_DATE('2/22/2015 9:20:06 AM', 'MM/DD/YYYY HH:MI:SS AM'))
TRUNC remove a parte de tempo de um DATE modelo.
Alternativamente,
Você pode usar o ANSI TIMESTAMP literal:
TRUNC(TIMESTAMP '2015-02-22 09:20:06')