sql >> Databáze >  >> RDS >> Oracle

Funkce TO_DATE v ORACLE

Data nemají formát – jsou reprezentována 7 nebo 8 bajtů .

SELECT DUMP( SYSDATE ) FROM DUAL;

Možná výstup:

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

Tento formát je velmi užitečný pro počítače k ​​porovnání dat, ale není tak užitečný pro lidi; takže když klient SQL (SQL/plus, SQL Developers, TOAD atd.) zobrazí datum, nezobrazí bajty, ale zobrazí je jako řetězec.

Dělá to implicitním voláním TO_CHAR() (nebo nějakou jinou interní metodu stringifikace dat) a k provedení tohoto převodu používá masku výchozího formátu.

SQL/Plus a SQL Developer použijí parametr relace uživatele NLS_DATE_FORMAT k provedení této konverze – viz tuto odpověď ohledně toho.

Takže váš druhý dotaz se implicitně převádí na něco, co se tomuto blíží (ale téměř jistě efektivněji):

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. MySQL:Aktualizace všech řádků nastavením pole na 0, ale nastavením pole jednoho řádku na 1

  2. Implementace Switchover/Switchback v PostgreSQL 9.3.

  3. Jak přejmenovat nahraný soubor před uložením do adresáře?

  4. Entity Framework se selháním MySql a migrací, protože maximální délka klíče je 767 bajtů