PostgreSQL неправильно упорядочивает столбец меток времени - PullRequest
4 голосов
/ 01 марта 2012

У меня есть таблица в базе данных PostgreSQL со столбцом типа TIMESTAMP WITHOUT TIME ZONE. Мне нужно упорядочить записи по этому столбцу, и, очевидно, у PostgreSQL есть некоторые проблемы с этим, поскольку оба

...ORDER BY time_column

и

...ORDER BY time_column DESC

дает мне тот же порядок элементов для моей выборки записей из 3 элементов, имеющих одинаковое значение time_column, за исключением количества миллисекунд в нем.

Похоже, что при сортировке значение в миллисекундах не учитывается.

Я уверен, что миллисекунды фактически хранятся в базе данных, потому что, когда я получаю записи, я вижу их в своем поле DateTime.

Когда я сначала загружаю все записи, а затем упорядочиваю их по time_column в памяти, результат правильный.

Я что-то упускаю, чтобы порядок работал правильно?

РЕДАКТИРОВАТЬ: Я, видимо, много скучал. Проблема была не в PostgreSQL, а в NHibernate, удаляющем миллисекунды из свойства DateTime.

1 Ответ

3 голосов
/ 02 марта 2012

Глупо думать, что PostgreSQL не сможет правильно сортировать метки времени. Проведите быстрый тест и будьте уверены:

CREATE TEMP TABLE t (x timestamp without time zone);

INSERT INTO t VALUES
 ('2012-03-01 23:34:19.879707')
,('2012-03-01 23:34:19.01386')
,('2012-03-01 23:34:19.738593');

SELECT x FROM t ORDER by x DESC;
SELECT x FROM t ORDER by x;

* 1004 что и требовалось доказать *

Тогда попытайтесь выяснить, что на самом деле происходит в вашем запросе. Если вы не можете, опубликуйте тестовый пример, и вам помогут presto pronto.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...