Oracle
 sql >> база данни >  >> RDS >> Oracle

Създайте изглед с 365 дни

Този прост изглед ще го направи:

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

Като това:

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> 

Датата се генерира чрез прилагане на няколко функции за дата на Oracle:

  • trunc(sysdate, 'yyyy') ни дава първи януари за текущата година
  • add_months(x, 11) ни дава първи декември
  • last_day(x) дава ни тридесет и първи декември
  • to_char(x, 'DDD') ни дава числото на тридесет и първи декември, 365 тази година и 366 следващата.
  • Тази последна цифра предоставя горната граница за генератора на редове CONNECT BY LEVEL <= X


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да форматирате числа в Oracle

  2. Активиране на TLS в Oracle Apps R12.2

  3. Какъв е еквивалентът на REF CURSOR на Oracle в MySQL, когато използвате JDBC?

  4. Как да зададете Incemental на true за множество таблици с един и същи собственик, като използвате DBMS_STATS.set_table_prefs?

  5. Деактивирайте и по-късно активирайте всички индекси на таблици в Oracle