I see that you are using moment, but in your case I do not think it is necessary because the date is in YYYY / MM / DD format and in this way it will be ordered correctly since it is ordered, by year, month and day. What to do when the date has a different format? ... you can go through each element tr of the tbody of the table, and take the date and place it in the cell within a span that is not visible (display: none), in YYYYMMDD format.
Example: link
CSS :
#example span {
display:none;
}
Javascript :
/* THIS IS ONLY FOR EXAMPLE TO CHANGE THE DATE FORMAT */
var changeDateFormat = $('#example tbody tr').each(function(i,e) {
var dateTD = $(this).find('td:eq(4)');
var date = dateTD.text().trim();
var parts = date.split('/');
dateTD.text(parts[0]+'/'+parts[2]+'/'+parts[1]);
});
$.when(changeDateFormat).done(function() {
processDates();
})
/* THIS IS ONLY FOR EXAMPLE TO CHANGE THE DATE FORMAT */
function processDates() {
var process = $('#example tbody tr').each(function(i,e) {
var dateTD = $(this).find('td:eq(4)');
var date = dateTD.text().trim();
var parts = date.split('/');
dateTD.prepend('<span>'+parts[0]+parts[2]+parts[1]+'</span>');
});
$.when(process).done(function() {
$('#example').DataTable({ "order": [[ 4, "desc" ]]});
})
}