In my application am trying to format and sort the date, i am using to_char()
function to format the date to my required format, but when i sort them it is sorting it as string sorting. But i want them to be sorted as date.
I need some help to achieve both in the same query. Kindly help me on the same.
The query which i used was,
SELECT to_char( t1.your_date_column1, your_format_mask ) as alias,
FROM your_table1 t1,your_table2
ORDER BY t1.your_date_column1
I wanted to Group By and Order By the Date field but the Date field included the Time and I didn't want to include the Time in the grouping and sorting. So I converted the Date to Character and then converted the character back to Date to eliminate the Time and sort by date not by text. That grouped the data by the date and sorted by the date.
The easiest way is to retrieve the same field with the query again and doing sorting based upon that filed
In your example
Try the above code
For sqlplus, use alter session set nls_date_format to what you want the date format to be, then just use the column name in your select statement and sort order.
You don't say what your application is written in, but in some environments (e.g. Oracle APEX, Oracle Reports) the solution is to not use
to_char
in the query, but then to apply the desired formatting in the tool's "column properties" or similar.If you let Oracle sort (recommended), just do it like described in Justin Cave's answer. If, for some reason, you do the sorting in Java, do not use
to_char
; get the dates asDate
objects instead and use e.g. aSimpleDateFormat
to do the formatting in Java (after sorting).