Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara memformat dan mengurutkan tanggal di Oracle?

Sepertinya Anda menginginkan sesuatu seperti

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

Dalam SELECT list, Anda ingin mengembalikan string karakter yang mewakili tanggal dalam format pilihan Anda. Dalam ORDER BY klausa, Anda ingin memesan pada tanggal yang sebenarnya. Menggunakan EMP standar dan DEPT tabel, misalnya

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.

Jika Anda menambahkan DISTINCT, masalahnya adalah Oracle tidak tahu bahwa fungsi yang Anda terapkan (dalam hal ini TO_CHAR) menyediakan pemetaan satu-ke-satu dari data di tabel ke data di output. Misalnya, dua tanggal yang berbeda (1 Oktober 2010 10:15:15 dan 1 Oktober 2010 23:45:50) mungkin menghasilkan output karakter yang sama, memaksa Oracle untuk menghilangkan salah satu dari dua string '01-10-2010' tetapi kedua tanggal tersebut akan diurutkan secara berbeda. Anda dapat memperbaiki masalah itu dengan membuat kueri dan mengonversi string kembali ke tanggal setelah melakukan DISTINCT dan sebelum melakukan 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. Kursor dalam prosedur mengembalikan lebih banyak nilai daripada kueri

  2. ubah status akun pengguna Oracle dari EXPIRE(GRACE) menjadi OPEN

  3. Rails 3.0.3 - Oracle_enhanced tidak berfungsi

  4. Cara Menginstal Database Oracle di Windows

  5. Oracle PL/SQL cara menghitung range ip untuk IPv6 cidr