Oracle-11g

To_Char 顯示日期不是升序

  • May 2, 2016

我能知道為什麼以及如何解決這個問題,如果我使用 To_Char 它不會按升序對日期進行排序。下面是我的程式碼

   select distinct To_Char (attendance_Date, 'dd/mm/yyyy')
   from DIT_2010MAR_CIT4114A_FYP1_NO
   order by 1 asc

得到的結果是


日期 
----------
01/05/2016
02/05/2016
03/04/2016
04/04/2016
05/04/2016
06/04/2016

如果您按 DD/MM/YYYY 格式的日期排序,那麼排序會將所有月份的第一天(每個月)放在首位,然後是月份的秒數,等等。

但是,您不能按未包含在 select distinct 中的列進行排序。要按日期升序排序,請分組並使用實際日期列而不是通過 to_char 格式化的日期:

select To_Char (attendance_Date, 'dd/mm/yyyy')
from DIT_2010MAR_CIT4114A_FYP1_NO
group by attendance_Date
order by attendance_Date asc

如果attendance_Date是時間戳,則首先將其轉換為日期(查詢中的任何位置)。

引用自:https://dba.stackexchange.com/questions/137170