sql >> Database >  >> RDS >> Oracle

TO_DATE-functie in ORACLE

Datums hebben geen formaat - ze worden weergegeven door 7- of 8-bytes .

SELECT DUMP( SYSDATE ) FROM DUAL;

Mogelijke output:

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

Dit formaat is erg handig voor computers om datums te vergelijken, maar niet zo handig voor mensen; dus wanneer de SQL-client (SQL/plus, SQL Developers, TOAD, enz.) een datum weergeeft, worden niet de bytes weergegeven, maar als een tekenreeks.

Het doet dit door een impliciete aanroep te doen naar TO_CHAR() (of een andere interne methode om datums te stringen) en gebruikt een standaardformaatmasker om deze conversie uit te voeren.

SQL/Plus en SQL Developer gebruiken de sessieparameter van de gebruiker NLS_DATE_FORMAT om deze conversie uit te voeren - zie dit antwoord hierover.

Uw tweede zoekopdracht wordt dus impliciet omgezet om iets te doen dat dit benadert (maar vrijwel zeker efficiënter):

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. Naad @Transactional annotatie werkt niet?

  2. Unieke codes genereren in PHP/MySQL?

  3. De eerste dag van de week in MySql krijgen met Week No

  4. verzameling van records naar out sys_refcursor