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

Sắp xếp theo ngày trong tuần từ thứ 2 đến chủ nhật

Bạn nhận được nó theo thứ tự như bạn đang có bởi vì bạn đang sắp xếp theo một chuỗi (và điều này sẽ không hoạt động vì bạn không chọn từ bất kỳ thứ gì).

Bạn có thể sắp xếp theo mô hình định dạng được sử dụng để tạo ngày trong tuần ở dạng số, D , nhưng vì Chủ nhật là ngày 1 nên tôi khuyên bạn nên sử dụng mod() để làm cho điều này hoạt động.

tức là giả sử bảng

create table a ( b date );

insert into a
 select sysdate - level
  from dual
connect by level <= 7;

Điều này sẽ hoạt động:

select mod(to_char(b, 'D') + 5, 7) as dd, to_char(b, 'DAY')
  from a
 order by mod(to_char(b, 'D') + 5, 7)

Đây là một SQL Fiddle để chứng minh.

Trong trường hợp của bạn, truy vấn của bạn sẽ trở thành:

select ename, to_char(hiredate,'fmDay') as "Day" 
  from my_table
 order by mod(to_char(hiredate, 'D') + 5, 7)


  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ác bước thay đổi Mật khẩu quản trị viên bị mất hoặc quên trên Tên miền WebLogic EBS R12.2

  2. Các phương pháp hay nhất:Nhiệm vụ bảo trì và nâng cao cho Đám mây Oracle

  3. Hàm NULLIF () trong Oracle

  4. TNS-12505:TNS:người nghe hiện không biết về SID được cung cấp trong bộ mô tả kết nối

  5. Hàm TRUNC (số) trong Oracle