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

Làm cách nào để loại trừ các ngày cuối tuần trong SQL?

Bạn chỉ cần thêm bộ lọc sau :

WHERE TO_CHAR(date_column, 'DY','NLS_DATE_LANGUAGE=AMERICAN') NOT IN ('SAT', 'SUN')

Truy vấn của bạn sẽ giống như sau:

SELECT SLA_Date
   FROM orders
 WHERE TO_CHAR(SLA_Date, 'DY','NLS_DATE_LANGUAGE=AMERICAN') NOT IN ('SAT', 'SUN')

Ví dụ:(mệnh đề WITH chỉ để tạo một trường hợp thử nghiệm), truy vấn dưới đây chỉ hiển thị các ngày trong tuần (tức là không bao gồm Thứ Bảy và Chủ Nhật) từ 1st May 2015 đến 31st May 2015 :

SQL> WITH DATA AS
  2    (SELECT to_date('05/01/2015', 'MM/DD/YYYY') date1,
  3      to_date('05/31/2015', 'MM/DD/YYYY') date2
  4    FROM dual
  5    )
  6  SELECT date1+LEVEL-1 the_date,
  7        TO_CHAR(date1+LEVEL-1, 'DY','NLS_DATE_LANGUAGE=AMERICAN') day
  8  FROM DATA
  9  WHERE TO_CHAR(date1+LEVEL-1, 'DY','NLS_DATE_LANGUAGE=AMERICAN')
 10        NOT IN ('SAT', 'SUN')
 11  CONNECT BY LEVEL <= date2-date1+1;

THE_DATE  DAY
--------- ---
01-MAY-15 FRI
04-MAY-15 MON
05-MAY-15 TUE
06-MAY-15 WED
07-MAY-15 THU
08-MAY-15 FRI
11-MAY-15 MON
12-MAY-15 TUE
13-MAY-15 WED
14-MAY-15 THU
15-MAY-15 FRI
18-MAY-15 MON
19-MAY-15 TUE
20-MAY-15 WED
21-MAY-15 THU
22-MAY-15 FRI
25-MAY-15 MON
26-MAY-15 TUE
27-MAY-15 WED
28-MAY-15 THU
29-MAY-15 FRI

21 rows selected.

SQL>

Để biết ví dụ chi tiết, hãy xem Tạo ngày, tên tháng, số tuần, số ngày giữa hai 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. Lỗi khi sử dụng hàm DBMS_CRYPTO để giải mã dữ liệu CLOB

  2. giữ một kết nối với DB hoặc đóng mở theo nhu cầu

  3. Nhà cung cấp OraOLEDB.Oracle chưa được đăng ký trên máy cục bộ

  4. Cách cài đặt Oracle trên máy Mac

  5. Oracle SQL - Sử dụng các phép nối để tìm các giá trị trong một bảng chứ không phải bảng khác