Ik gok EventDate
is een char of varchar en geen datum, anders zou je bestelling per clausule in orde zijn.
U kunt CONVERT gebruiken om de waarden naar een datum te wijzigen en daarop te sorteren
SELECT *
FROM
vw_view
ORDER BY
CONVERT(DateTime, EventDate,101) DESC
Het probleem daarmee is, zoals Sparky in de opmerkingen aangeeft, als EventDate een waarde heeft die niet kan worden geconverteerd naar een datum waarop de query niet kan worden uitgevoerd.
Dit betekent dat u de slechte rijen moet uitsluiten of de slechte rijen onderaan de resultaten moet laten staan
Om de slechte rijen uit te sluiten, voegt u gewoon WHERE IsDate(EventDate) = 1
. toe
Om de slechte datums naar beneden te laten gaan, moet je CASE
. gebruiken
bijv.
ORDER BY
CASE
WHEN IsDate(EventDate) = 1 THEN CONVERT(DateTime, EventDate,101)
ELSE null
END DESC