sql >> Database >  >> RDS >> Oracle

Maak een weergave met 365 dagen

Deze eenvoudige weergave zal het doen:

create or replace view year_days as
select trunc(sysdate, 'YYYY') + (level-1) as the_day
from dual
connect by level <= to_number(to_char(last_day(add_months(trunc(sysdate, 'YYYY'),11)), 'DDD'))
/

Zoals dit:

SQL> select * from year_days;

THE_DAY
---------
01-JAN-11
02-JAN-11
03-JAN-11
04-JAN-11
05-JAN-11
06-JAN-11
07-JAN-11
08-JAN-11
09-JAN-11
10-JAN-11
11-JAN-11

...

20-DEC-11
21-DEC-11
22-DEC-11
23-DEC-11
24-DEC-11
25-DEC-11
26-DEC-11
27-DEC-11
28-DEC-11
29-DEC-11
30-DEC-11
31-DEC-11

365 rows selected.

SQL> 

De datum wordt gegenereerd door verschillende Oracle-datumfuncties toe te passen:

  • trunc(sysdate, 'yyyy') geeft ons 1 januari voor het lopende jaar
  • add_months(x, 11) geeft ons 1 december
  • last_day(x) geeft ons eenendertig december
  • to_char(x, 'DDD') geeft ons het getal van eenendertig december, 365 dit jaar en 366 volgend.
  • Dit laatste cijfer geeft de bovengrens voor de rijgenerator CONNECT BY LEVEL <= X


  1. ORA-16789:standby-logbestanden voor opnieuw uitvoeren onjuist geconfigureerd

  2. Verander unieke sleutel samen in mysql

  3. Uitzondering in thread main java.sql.SQLException:Toegang geweigerd voor gebruiker ''@'localhost' (met wachtwoord:NEE)

  4. Rails met in het geheugen database