sql >> Base de Datos >  >> RDS >> Oracle

Función TO_DATE en ORACLE

Las fechas no tienen formato:están representadas por 7 u 8 bytes .

SELECT DUMP( SYSDATE ) FROM DUAL;

Podría producir:

Typ=13 Len=8: 220,7,11,26,16,41,9,0

Este formato es muy útil para que las computadoras comparen fechas pero no tanto para las personas; por lo tanto, cuando el cliente SQL (SQL/plus, SQL Developers, TOAD, etc.) muestra una fecha, no muestra los bytes sino que los muestra como una cadena.

Lo hace haciendo una llamada implícita a TO_CHAR() (o algún otro método interno para clasificar fechas) y utiliza una máscara de formato predeterminada para realizar esta conversión.

SQL/Plus y SQL Developer usarán el parámetro de sesión del usuario NLS_DATE_FORMAT para realizar esta conversión:consulte esta respuesta con respecto a esto.

Entonces, su segunda consulta se convierte implícitamente para hacer algo parecido a esto (pero, casi con seguridad, de manera más eficiente):

SELECT TO_CHAR(
         TO_DATE('01-01-2015','DD-MM-YYYY'),
         ( SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT' )
       )
FROM   DUAL