I don’t see anything wrong with your code. Sorting is done by value stored in the DB. The value for a date field in the DB is always “YYYYMMDD” and is not changed by the display format.
Is date_end a top level field or is it a sub field of a group field or some other type of field.