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

Cách xác định tuần của một quý trong truy vấn Oracle

Đây sẽ là tuần (Chủ nhật - Thứ bảy) của quý:

SELECT TO_CHAR( SYSDATE, 'YYYY-"Q"Q-"W"' )
     || ( 7 + TRUNC( SYSDATE + 1, 'IW' ) - TRUNC( TRUNC( SYSDATE, 'Q' ) + 1, 'IW' ) ) / 7;
         AS "Current Time"
FROM DUAL

Giải thích :

  • Bạn có thể tìm Chủ Nhật trùng hoặc ngay trước một ngày cụ thể bằng cách sử dụng NEXT_DAY (TRUNC (date_value), 'SUNDAY') - 7 (phụ thuộc vào NLS_TERRITORY cài đặt) hoặc TRUNC (date_value + 1, 'IW') - 1 (ngắn hơn và không phụ thuộc vào bất kỳ cài đặt nào).
  • TRUNC (date_value, 'Q') cung cấp cho ngày của ngày đầu tiên của quý chứa giá trị ngày (tức là ngày 1 tháng 1, ngày 1 tháng 4, ngày 1 tháng 7 hoặc ngày 1 tháng 10).
  • Kết hợp cả hai lại với nhau, ngày Chủ nhật trước ngày đầu tiên của quý được cung cấp bởi TRUNC (TRUNC (date_value, 'Q') + 1, 'IW') - 1
  • Do đó, số ngày giữa Chủ Nhật trước hoặc ngay trước khi bắt đầu quý và Chủ Nhật trước một ngày nhất định là: (TRUNC (date_value + 1, ' IW ') - 1) - (TRUNC (TRUNC (date_value,' Q ') + 1,' IW ') - 1) - có thể đơn giản hóa bằng cách hủy -1 điều khoản.
  • Số tuần chênh lệch chỉ là số đó chia cho 7 (nhưng cho giá trị được lập chỉ mục 0 và bạn muốn số tuần của quý được lập chỉ mục 1; bạn thêm 1 tuần vào kết quả hoặc trước thực hiện phép chia, cộng thêm 7 ngày).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách định dạng số trong ký hiệu khoa học trong Oracle

  2. VS2010 + Trình điều khiển Oracle:ORA-12154:TSN:không thể phân giải mã định danh kết nối được chỉ định

  3. Lấy dữ liệu từ cơ sở dữ liệu oracle dưới dạng tệp CSV (hoặc bất kỳ định dạng văn bản tùy chỉnh nào khác)

  4. Truy vấn SQL Oracle tối ưu để hoàn thành từng nhóm trên nhiều cột trong một bảng có chứa ~ 7.000.000 bản ghi

  5. Các câu lệnh DDL có luôn cung cấp cho bạn một cam kết ngầm hay bạn có thể nhận được một lần khôi phục ngầm không?