Сортировка конката по Postgres(дата,строка)

#sql #postgresql #date #sorting

Вопрос:

Мне было интересно, как postgres сортирует списки следующего типа

  1. 2021-10-18 15:12:09 яблоко
  2. 2021-10-18 12:10:09 мальчик
  3. 2021-10-18 11:12:15стекло

Я попробовал в postgres, и это привело к следующему порядку

 with temp_table(a) as (
values ('2021-10-18 15:12:09apple'),
  ('2021-10-18 12:10:09boy'),
 ('2021-10-18 11:12:15stack')
) select * from temp_table order by a

 

«2021-10-18 11:12:15стекло»
«2021-10-18 12:10:09 мальчик»
«2021-10-18 15:12:09 яблоко»

Как это работает ?

Комментарии:

1.Почему это вас удивляет? Очевидно 2021-10-18 11:12:15 , будут отсортированы до 2021-10-18 12:10:09

2. Каков желаемый порядок?

Ответ №1:

Как и ожидалось, он сортирует данные в виде строк (начиная с крайнего левого символа).

Так 2021-10-18 11:12:15stack что < 2021-10-18 12:10:09boy 2021-10-18 15:12:09apple

потому что, помимо 2021-10-18 того, что является общим, 11:12 as string-это < 12:10 как строка и 15:12 как строка