Oracle
 sql >> Datenbank >  >> RDS >> Oracle

TO_DATE-Funktion in ORACLE

Datumsangaben haben kein Format – sie werden durch 7- oder 8-Byte dargestellt .

SELECT DUMP( SYSDATE ) FROM DUAL;

Könnte ausgeben:

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

Dieses Format ist sehr nützlich für Computer, um Daten zu vergleichen, aber nicht so nützlich für Menschen; Wenn also der SQL-Client (SQL/plus, SQL Developers, TOAD usw.) ein Datum anzeigt, zeigt er nicht die Bytes an, sondern zeigt es als Zeichenfolge an.

Dies geschieht durch einen impliziten Aufruf von TO_CHAR() (oder eine andere interne Methode zum Stringifizieren von Daten) und verwendet eine Standardformatmaske, um diese Konvertierung durchzuführen.

SQL/Plus und SQL Developer verwenden den Sitzungsparameter NLS_DATE_FORMAT des Benutzers Um diese Konvertierung durchzuführen, siehe diese Antwort diesbezüglich.

Ihre zweite Abfrage wird also implizit so konvertiert, dass sie etwas Ähnliches tut (aber mit ziemlicher Sicherheit effizienter):

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