次のようなものが必要なようです
SELECT to_char( your_date_column, your_format_mask )
FROM your_table
ORDER BY your_date_column
SELECT
で リストでは、希望する形式で日付を表す文字列を返します。 ORDER BY
で 条項、あなたは実際の日付で注文したいです。標準のEMP
を使用する およびDEPT
たとえば、テーブル
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.
DISTINCTを追加する場合、問題は、適用している関数(この場合はTO_CHAR)がテーブルのデータから出力のデータへの1対1のマッピングを提供することをOracleが認識しないことです。たとえば、2つの異なる日付(2010年10月1日10:15:15と2010年10月1日23:45:50)が同じ文字出力を生成し、Oracleが2つの「01-10-2010」文字列の1つを削除するように強制する場合があります。ただし、2つの日付の並べ替えは異なります。 DISTINCT
を実行した後、クエリをネストし、文字列を日付に戻すことで、この問題を修正できます。 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.