В моей PostgreSQL БД я храню JSONB, где один из узлов JSON представляет собой строку даты в следующем формате:
ГГГГ-ММ-ДД, затем часы в 24-часовом формате , минуты и секунды, за которыми следует смещение часового пояса, например:
2003-06-30 05: 51: 54 + 00: 00 2003-06-30 14: 25: 45 + 10: 00
Когда я делаю сортировку по дате в порядке AS C, время не сортируется должным образом по смещению часового пояса, и я думаю, это потому, что PostgreSQL все еще смотрит на даты, как если бы они были строками .
SELECT header.id,
header.data ->> 'date' as "Date"
FROM all_messages.sci_math_headers header
WHERE header.data ->> 'msgid' = 'xyz'
OR header.data ->> 'ref' like '%xyz>%'
ORDER BY header.data ->> 'date' ASC
LIMIT 20;
Так что, хотя 2003-06-30 14: 25: 45 + 10: 00 должно быть первым, это будет вторым результатом. 2003-06-30 05: 51: 54 + 00: 00 2003-06-30 14: 25: 45 + 10: 00
Вот пример снимка экрана:
Можно ли преобразовать каждую строку даты в метку времени непосредственно в моем запросе и правильно отсортировать ее?