Сортировка строки перед числом с помощью Postgres и Django

Я хочу использовать нечеткие даты для сортировки в запросе Django, поэтому вы можете использовать полную дату, если она у вас есть, но, возможно, вы знаете только год и месяц. Например, Jan XX 2024 будет находиться перед Jan 1 2024 и Jan 2 2024. Изначально я планировал хранить в виде строки 202401XX, 20240101 и т. д., но Postgres естественным образом сортирует символы после чисел, так что в этом случае дата без дня будет располагаться ПОСЛЕ даты с указанным днем.

Я думал преобразовать 20240101 в буквы перед сохранением в базе данных (X=A, 0=F, 1=G и т.д.), поскольку это дешево с точки зрения вычислений, и я мог бы контролировать, где все сортируется. Это ужасная идея? Есть ли лучший способ? Я не хочу делать пользовательский запрос к Postgres, потому что это будет сложно со встроенной в Django пагинацией

Ок, я идиот. Я думал, что мне нужно добавить символ для замены неизвестных значений, но если я просто использую 202401 для января 2024 года и 20240101 для 1 января 2024 года, то все работает нормально. Если я не знаю день, я, конечно, не буду знать время. В любом случае, спасибо всем, кто смотрел на это, и тем, кто пытался помочь.

Вернуться на верх