Probleem:
U wilt de huidige datum (zonder de tijd) in Oracle krijgen.
Oplossing 1 (als u de nullen als de tijd niet erg vindt):
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Als u deze zoekopdracht bijvoorbeeld op 16 juni 2021 zou uitvoeren, zou de resultatentabel er als volgt uitzien:
huidige_datum |
---|
2021-06-16T00:00:00Z |
Discussie:
Oracle heeft geen gegevenstype dat alleen de datum opslaat zonder de tijd. Maar als u de nullen in plaats van de tijd niet erg vindt, kunt u eenvoudig een datum opslaan in een DATE
datatype (dat zowel de datum als de tijd opslaat in Oracle). Om de huidige datum en tijd te krijgen als een DATE
waarde, kunt u eenvoudig CURRENT_DATE
. gebruiken . Om van de tijd af te komen (en in plaats daarvan nullen te hebben), moet je de datum inkorten:
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Oplossing 2 (als u alleen de datum wilt en geen nullen in plaats van de tijd):
SELECT TO_CHAR(CURRENT_DATE, 'yyyy-MM-dd') AS current_date FROM dual;
Als u deze zoekopdracht bijvoorbeeld op 16 juni 2021 zou uitvoeren, zou de resultatentabel er als volgt uitzien:
huidige_datum |
---|
2021-06-16 |
Discussie:
Om een tekst van VARCHAR2
. te krijgen type dat een datum opslaat, kunt u de TO_CHAR()
. gebruiken functie in Oracle. U moet de datum-/tijdstempel specificeren die moet worden geconverteerd als het eerste argument, en in het formaat waarin u de datum als het tweede argument wilt opslaan.
Aangezien u de huidige datum wilt, is het eerste argument CURRENT_DATE
. Het tweede argument is jouw keuze. Bijvoorbeeld 'yyyy-MM-dd'
staat voor 'jaar-maand-dag', waarbij de maand numeriek is in plaats van tekst. De onderstaande tabel geeft enkele voorbeelden van datumnotaties en de respectievelijke uitvoer voor de datum 16 juni 2021.
datumnotatie | resultaat |
---|---|
'JJJJ-MM-DD' | 2021-06-16 |
'JJJJ/MM/DD' | 201/06/16 |
'JJJJ MM DD' | 2021 06 16 |
'DD-MON-YYYY' | 16-JUN-2021 |
'DD-MA-JJ' | 16-JUN-21 |
'FMMonth DD, JJJJ' | 16 juni 2021 |
U kunt hier meer lezen over datumnotaties.