Блог вопиющего в пустыне
Из записок дилетанта
Для извлечения из базы этих данных (дата тестирования, предмет по которому проводилось тестирование, выставленные по предмету баллы) и одновременной сортировки их по возрастанию даты (от ранней до более поздней), был сформирован следующий запрос:
$query="select StudentID, Surname, Name, SecondName, DocumentNumber, Testball100 from TestBallStudent WHERE Surname='$Fam' AND DocumentNumber='$Docum' ORDER BY ExamDate ASC";
В результате в веб-форму была выведена таблица, где даты тестирования располагались, как и требовалось, по возрастанию.
Но сами даты были представлены в не совсем удобном для восприятия виде, а именно: "год.месяц.день". Именно в таком формате даты находились в базе MySQL. Было решено конвертировать даты в "удобоваримый" формат "день.месяц.год" непосредственно в базе MySQL. Для этого был применен следующий скрипт:
UPDATE TestBallStudent
SET ExamDate = DATE_FORMAT(STR_TO_DATE(ExamDate, '%Y.%m.%d'), '%d.%m.%Y');
И только после этого делался выше приведенный запрос $query, после выполнения которого в веб-форме была получена таблица, где даты были представлены в формате "день.месяц.год" и располагались в основном по возрастанию, кроме одной: 30.05.2022.
Получалось, что оператор ORDER BY сортировал даты с возрастанием по дню, но при этом не учитывал, что дата 30.05.2022 (за май месяц) должна выводится в форму раньше, чем все остальные (июньские). Т.е. сортировка должна была проводиться сначала по месяцу, а потом по дню. Но чтобы мы ни делали, какие бы запросы не формировали, дата с большим днём, но меньшим месяцем, располагалась всегда позже, чем даты с меньшим днем, но более поздним месяцем.
Итогом всей этой деятельности стало только понимание того, что для выполнения исходного требования надо сначала в запросе $query отсортировать дату, имеющую формат "год.месяц.день", по возрастанию (в этом случае сортировка происходит правильно), и только после этого отсортированную дату переконвертировать в формат "день.месяц.год". Перелопатил весь интернет, перепробовал всё, что там предлагалось, но решения так и не было найдено: дата 30.05.2022 располагалась не там, где должна была быть.
Так бы всё и осталось в первозданном виде, если бы не случился ИИ. За недостаточностью своего (природного), воспользовался искусственным Qwen2.5-Max. Загрузил в него мой начальный запрос $query и сформулировал такую задачу: "Надо сначала отсортировать дату по возрастанию ORDER BY ExamDate ASC. И только после этого отсортированную дату переформатировать DATE_FORMAT(STR_TO_DATE(ExamDate, '%Y.%m.%d'), '%d.%m.%Y')".
И вот что он мне выдал:
Вставил данный SQL-запрос в PHP-код веб-формы и получил отсортированную дату в формате "день.месяц.год".
Впоследствии только немного его подкорректировал (упростил):
- Комментарии




