Oracle datum functie

Naast numerieke waarden en tekenreeksen is er het veelgebruikte gegevenstype date voor datums en tijdstempels. De datum kan met millisecondenprecisie worden verwerkt. Hieronder heb ik de Oracle datum functies voor het berekenen van datums vermeld, die ik vaak gebruik.

Opmaakmasker

De Oracle-functies voor datumberekening en -conversie vereisen soms een opmaakmasker (format_mask), dat aangeeft waar in de string voor conversie/berekening welk deel van de datum zich bevindt. De volgende tabel bevat slechts een klein deel van de mogelijke parameters omdat ik vrijwel nooit andere parameters gebruik:

ParameterBeschrijvingVoorbeeld
YYYYJaartal 4 cijfers2008
YYJaartal 2 cijfers08
MMMaand11
WWWeek van het jaar51
DDag van de week (1-7)3
DDDag van de maand15
HH24Uur (24-uursformaat)13
MIMinuut45
SSSeconde34

to_date()

Met de functie to_date() kan uit een string een datum worden gegenereerd. Dit wordt gedaan door op basis van het bovenstaande opmaakmasker te bepalen hoe de datum binnen de string is gestructureerd. De functie to_date() creëert een datum als deze geldig is; anders eindigt het met een fout. Voorbeelden:

  • select to_date('02.10.2003','DD.MM.YYYY') from dual;
  • select to_date('01.01.2010 15:45','DD.MM.YYYY HH24:MI') from dual;

to_char()

De functie to_char() converteert een datum terug naar een tekenreeks. Net als to_date() gebruikt het dezelfde parameters. In plaats van een string met een datum wordt echter de datumvariabele of het datumveld doorgegeven. Voorbeelden:

  • select to_char(sysdate,'YYYY') from dual; — huidige jaar
  • select to_char(sysdate,'HH24:MI:SS') from dual; — huidige tijd teruggeven

Werken met maanden

De bovenstaande voorbeelden hebben betrekking op eenvoudige conversies. Voor maanden kunt u de functie last_day() gebruiken om de laatste dag van de maand te bepalen vanaf een verstreken datum. Er wordt opnieuw een datum geretourneerd:

  • select last_day(sysdate) from dual; – Toont de laatste dag van de huidige maand
  • select to_char( last_day(sysdate) , 'DD') from dual; – retourneer alleen de laatste dag van de maand van de huidige maand

It’s easier to determine the first day of the month. Oracle has not provided a function for this

  • select to_date( sysdate, '01.MM.YYYY') from dual; — Retourdatum als een tekenreeks die de eerste dag van de maand bevat.

Omdat de eerste dag van de maand altijd 01 is, wordt in het functiemasker in plaats van DD de waarde 01 ingevoerd, omdat deze niet wordt geïnterpreteerd maar direct wordt overgenomen.

De functie add_months() voegt een willekeurig aantal maanden toe aan een datum. Voorbeeld:

  • select add_months( to_date('04.05.2010','DD.MM.YYYY'), 4 ) from dual; — Datum is 04.09.2010

Gemakkelijke berekening

Elk getal kan aan een datum worden toegevoegd of afgetrokken. De waarde 1 komt overeen met één dag. Bijvoorbeeld bij

  • select sysdate + 1.5 from dual;

er wordt een datum geretourneerd die met 1,5 dag of 36 uur is verlengd.

Datum

Leave a Reply

Your email address will not be published. Required fields are marked *