sql >> Database teknologi >  >> RDS >> Oracle

Opret visning med 365 dage

Denne enkle visning vil gøre det:

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'))
/

Sådan:

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> 

Datoen genereres ved at anvende flere Oracle-datofunktioner:

  • trunc(sysdate, 'yyyy') giver os den første januar for indeværende år
  • add_months(x, 11) giver os den første december
  • last_day(x) giver os den enogtredive december
  • to_char(x, 'DDD') giver os nummeret på den enogtredive december, 365 i år og 366 næste.
  • Denne sidste figur angiver den øvre grænse for rækkegeneratoren CONNECT BY LEVEL <= X


  1. Angivelse af specifikke felter med Sequelize (NodeJS) i stedet for *

  2. Hvorfor en enkelt SQL delete-sætning vil forårsage dødvande?

  3. Hvordan gemmer man dato-tid i UTC i en database ved hjælp af EclipseLink og Joda-Time?

  4. java.sql.SQLException:Ukendt indledende tegnsætindeks '255' modtaget fra serveren til connector 8.0.11