sql >> Database teknologi >  >> RDS >> Oracle

TO_DATE-funktion i ORACLE

Datoer har ikke et format - de er repræsenteret af 7- eller 8-bytes .

SELECT DUMP( SYSDATE ) FROM DUAL;

Udsender muligvis:

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

Dette format er meget nyttigt for computere til at sammenligne datoer, men ikke så nyttigt for folk; så når SQL-klienten (SQL/plus, SQL Developers, TOAD osv.) viser en dato, viser den ikke bytes, men viser den som en streng.

Det gør det ved at foretage et implicit kald til TO_CHAR() (eller en anden intern metode til at stringificere datoer) og bruger en standardformatmaske til at udføre denne konvertering.

SQL/Plus og SQL Developer vil bruge brugerens sessionsparameter NLS_DATE_FORMAT for at udføre denne konvertering - se dette svar om dette.

Så din anden forespørgsel bliver implicit konverteret til at gøre noget, der nærmer sig dette (men næsten helt sikkert mere effektivt):

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


  1. Retter 1064 SQL-fejl ved import af database til Wampserver

  2. SQL (oracle) for at sammenligne to lister

  3. Oracle VÆLG TOP 10 poster

  4. Vis et BLOB-billede PHP MySQL sammen med andre data