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

Số ngày thứ sáu giữa hai ngày

Điều này sẽ làm được điều đó:

select ((next_day(date2-7,'FRI')-next_day(date-1,'FRI'))/7)+1 as num_fridays
from data

Có lẽ tốt nhất là tôi nên phá vỡ điều đó. Hàm NEXT_DAY trả về ngày tiếp theo là ngày (trong trường hợp này là thứ sáu) sau ngày.

Vì vậy, để tìm thứ sáu đầu tiên sau ngày d1 sẽ là:

next_day( d1, 'FRI')

Nhưng nếu d1 là thứ sáu sẽ trả về thứ sáu tiếp theo, vì vậy chúng tôi điều chỉnh:

next_day( d1-1, 'FRI')

Tương tự để tìm thứ sáu cuối cùng cho đến và bao gồm d2, chúng tôi thực hiện:

next_day( d1-7, 'FRI')

Trừ đi 2 sẽ được số ngày:0 nếu trùng ngày, 7 nếu cách nhau một tuần, v.v.:

next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI') 

Chuyển đổi sang tuần:

(next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7

Cuối cùng, nếu chúng trùng ngày thì chúng ta nhận được 0, nhưng thực sự có 1 ngày thứ sáu, v.v., vì vậy chúng ta thêm một ngày:

((next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7) + 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. verify_queryable_inventory được trả về ORA-20008:Đã hết thời gian chờ

  2. Thu thập thống kê giản đồ bằng FND_STATS trong EBS 11i và R12

  3. Danh sách các khóa ngoại và các bảng mà chúng tham chiếu trong Oracle DB

  4. Thay đổi định nghĩa TYPE trong Oracle 21c

  5. Có đầu ra PL / SQL trong thời gian thực