sql >> Databasteknik >  >> RDS >> Oracle

TO_DATE-funktionen i ORACLE

Datum har inget format – de representeras av 7- eller 8-byte .

SELECT DUMP( SYSDATE ) FROM DUAL;

Kan skriva ut:

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

Det här formatet är mycket användbart för datorer att jämföra datum men inte så användbart för människor; Så när SQL-klienten (SQL/plus, SQL-utvecklare, TOAD, etc) visar ett datum visar den inte byte utan visar det som en sträng.

Den gör detta genom att göra ett implicit anrop till TO_CHAR() (eller någon annan intern metod för att strängsätta datum) och använder en standardformatmask för att utföra denna konvertering.

SQL/Plus och SQL Developer kommer att använda användarens sessionsparameter NLS_DATE_FORMAT för att utföra denna konvertering - se det här svaret angående detta.

Så din andra fråga konverteras implicit för att göra något som närmar sig detta (men, nästan säkert, mer 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. ställer in mamp-portarna till 80 och 3306

  2. Saperate PostgreSQL db för varje klient, med automatiserade migreringar för att skapa klient på en Django-app och på samma server

  3. mysql-fråga för länkad lista

  4. Hur MINUTE() fungerar i MariaDB