Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tạo Chế độ xem với 365 ngày

Chế độ xem đơn giản này sẽ làm được điều đó:

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

Như thế này:

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> 

Ngày được tạo bằng cách áp dụng một số hàm ngày của Oracle:

  • trunc(sysdate, 'yyyy') cho chúng ta ngày đầu tiên của tháng 1 cho năm hiện tại
  • add_months(x, 11) mang đến cho chúng ta ngày đầu tiên của tháng 12
  • last_day(x) mang đến cho chúng ta ngày 31 tháng 12
  • to_char(x, 'DDD') cho chúng ta số 31 của tháng 12, 365 trong năm nay và 366 tiếp theo.
  • Hình cuối cùng này cung cấp giới hạn trên cho trình tạo hàng 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 SQL - Tạo và cập nhật một cột với số ngẫu nhiên khác nhau trong mỗi hàng

  2. ORACLE:KHÔNG CÓ CƠ SỞ DỮ LIỆU - nhưng dữ liệu tồn tại

  3. Làm cách nào để ghi / theo dõi các lệnh gọi thủ tục được lưu trữ của Oracle với các giá trị tham số?

  4. Oracle - Chuyển đổi các hàng thành cột

  5. SQL:Liên hợp hai bảng không khớp đầy đủ cột