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

Làm thế nào để định dạng và sắp xếp một ngày trong Oracle?

Có vẻ như bạn muốn một cái gì đó giống như

SELECT to_char( your_date_column, your_format_mask )
  FROM your_table
 ORDER BY your_date_column

Trong SELECT , bạn muốn trả về một chuỗi ký tự đại diện cho ngày ở định dạng ưa thích của bạn. Trong ORDER BY , bạn muốn đặt hàng trước ngày thực tế. Sử dụng EMP tiêu chuẩn và DEPT bảng, chẳng hạn

SQL> ed
Wrote file afiedt.buf

  1  select to_char( hiredate, 'DD-MM-YYYY' )
  2    from emp,
  3         dept
  4   where emp.deptno = dept.deptno
  5*  order by hiredate
SQL> /

TO_CHAR(HI
----------
17-12-1980
20-02-1981
22-02-1981
02-04-1981
01-05-1981
09-06-1981
08-09-1981
28-09-1981
17-11-1981
03-12-1981
03-12-1981
23-01-1982
19-04-1987
23-05-1987

14 rows selected.

Nếu bạn thêm một DISTINCT, vấn đề là Oracle không biết rằng hàm bạn đang áp dụng (trong trường hợp này là TO_CHAR) cung cấp ánh xạ 1-1 từ dữ liệu trong bảng đến dữ liệu trong đầu ra. Ví dụ:hai ngày khác nhau (ngày 1 tháng 10 năm 2010 10:15:15 và ngày 1 tháng 10 năm 2010 23:45:50) có thể tạo ra cùng một đầu ra ký tự, buộc Oracle phải loại bỏ một trong hai chuỗi '01-10-2010' nhưng hai ngày sẽ sắp xếp khác nhau. Bạn có thể khắc phục sự cố đó bằng cách lồng truy vấn của mình và chuyển đổi chuỗi trở lại một ngày sau khi thực hiện DISTINCT và trước khi thực hiện ORDER BY

SQL> ed
Wrote file afiedt.buf

  1  select hire_date_str
  2    from (
  3      select distinct to_char( hiredate, 'DD-MM-YYYY' ) hire_date_str
  4        from emp,
  5             dept
  6       where emp.deptno = dept.deptno
  7      )
  8*  order by to_date(hire_date_str,'DD-MM-YYYY')
SQL> /

HIRE_DATE_
----------
17-12-1980
20-02-1981
22-02-1981
02-04-1981
01-05-1981
09-06-1981
08-09-1981
28-09-1981
17-11-1981
03-12-1981
23-01-1982
19-04-1987
23-05-1987

13 rows selected.


  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 cài đặt Oracle Express Edition cho Thực hành SQL

  2. Làm thế nào để sử dụng MAX () trên một kết quả truy vấn con?

  3. cập nhật một bảng oracle rất lớn

  4. Chiều dài thực của một chuỗi, như Oracle đã thấy

  5. Làm cách nào để bạn kết nối với máy chủ LDAP bằng node-oracledb?