Макс не возвращает максимальное значение метки времени

В PostgreSQL 16.1 у меня есть очень большая таблица mytable со столбцом _modified типа Timestamp с часовым поясом. Когда я запускаю запрос ниже для всей таблицы, он возвращает меньшее значение метки времени по сравнению с тем, когда я запускаю запрос как подмножество таблицы.

Запрос ко всей таблице возвращает 06-11-2023 17:06:38.000:

select max(cast(_modified at time zone 'UTC' as timestamp))
from mytable 
;

Подмножество таблицы возвращает 11-06-2023 17:06:38.001:

select max(cast(_modified at time zone 'UTC' as timestamp))
from mytable 
where mycondition = true
;

Я ожидаю, что запрос без предложенияwhere вернет хотя бы значение подмножества запроса. Не уверен, связано ли это, но я запускаю эти запросы в DBeaver. Кто-нибудь знает, как это могло произойти и как заставить оператор max возвращать правильное значение?

Вы ведь понимаете, что 6 ноября 2023 года больше, чем 11 июня 2023 года, верно? Другими словами, как показано на данный момент, проблем, похоже, нет, и результаты верны. В противном случае предоставьте минимально воспроизводимый пример (и убедитесь, что он правильный и последовательный).

Mark Rotteveel 15.08.2024 11:18

11.06.2023 неоднозначно. Это 6 ноября или 11 июня?

Thorsten Kettner 15.08.2024 11:21

Судя по всему, дата отформатирована как дд-мм-гггг, и ожидаемый результат правильный.

Salman Arshad 15.08.2024 13:45

Невозможно ответить без конфигурации данных и временной метки. Но, похоже, у вас вообще нет проблем, просто нам не хватает данных, подтверждающих это.

Frank Heikens 15.08.2024 15:38
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
4
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я думаю, ваши запросы работают правильно, просто формат, в котором вы получаете результат, dd-mm-yyyy.

Таким образом, значение во всей таблице (06-11-2023) больше, чем значение в подмножестве строк (11-06-2023).

Попробуйте переиндексировать таблицу, используя:

REINDEX TABLE mytable

Другие вопросы по теме