SELECT ...
FROM ...
ORDER BY DATEDIFF(endDate, starDate);
[править] выше запроса работает с датами. Как отметил Кант Саши, он будет игнорировать раз, когда часть вашего DATETIME
С другой стороны, TIMEDIFF
терпит неудачу, если разница находится за пределами диапазона TIME
(-838:59:59
к 838:59:59
).
Комплексное решение может быть:
SELECT ...
FROM ...
ORDER BY
DATEDIFF(endDate, starDate),
TIMEDIFF(TIME(endDate), TIME(starDate));
Вероятно выполняет очень, хотя ... Если требуется такая точность, и если разница между двумя датами может быть за пределами TIME
диапазона, то разделив каждый ваших столбцов DATETIME
на две колонки DATE
и TIME
, безусловно, будут работать лучше, если вы примените один индекс для каждого из четырех результирующих столбцов.
это только показывает разницу в дате, а как насчет того, чтобы данные и с тем же день –
@SashiKant Correct, TimeDiff() более подходит в данном случае. – RandomSeed