As you had already mentioned that you are using FormatDate function to format the date, So the sorting is applied to the output of the function which is STRING. So it applies sorting on the string and sorts only the initial alphabets which are a day in your case.
You can get your task done in few ways:
Easiest option will add another column with the same field and then apply sorting on this and then hide the column. This will sort your data on the date field.
Other but better option will be using a custom date format to format the date field. But in order to do so, you will have to go for an applet to have a custom date format. Why is it better? Because it affects only the presentation of the data but the type of field still remains same. So, if you apply sorting after using the custom format, it behaves as date type and sorting will work fine.