ORDER BY явно не работает для столбца Datetime? - PullRequest
0 голосов
/ 08 января 2019

У меня есть небольшая таблица для ежедневников с этой схемой:

id (int, not null)
timestamp (datetime, not null)
costcenter (int, not null)
initials (varchar(3),null)
memo (varchar(250),not null)

ID - это самоинкрементный столбец Identity.

Вот все строки данных после того, как я выполнил запрос

SELECT id, timestamp 
FROM LOG 
ORDER BY TIMESTAMP DESC

и получил это в результате:

8   2018-12-30 10:51:08.000
7   2018-12-29 10:51:08.000
6   2018-12-13 10:51:08.000
5   2018-12-12 10:51:08.000
4   2018-01-04 08:31:00.000
3   2018-01-03 08:31:00.000
2   2018-01-02 08:45:00.000
1   2018-01-02 08:31:00.000

Очевидно, что не в порядке убывания метки времени!

Если я опускаю ключевое слово DESC, результаты запроса возвращаются со столбцом идентификатора в порядке (1-8). Похоже, я сортирую по идентификатору, а не по метке времени.

Я что-то упустил? Это проблема с идентификатором столбца?

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Вы можете попробовать:

SELECT id, timestamp 
FROM LOG 
ORDER BY TIMESTAMP + 1 DESC
0 голосов
/ 09 января 2019

У меня были некоторые проблемы с полем под названием TIMESTAMP, и, возможно, это потому, что это зарезервированное слово. Я проверил на своей машине, и она работает хорошо, как вы показали, но, возможно, проблема зависит от версии SQL. Я попытался бы заставить систему идентифицировать ее как поле:

SELECT id, [timestamp] 
FROM LOG 
ORDER BY [TIMESTAMP] DESC

Или также:

SELECT id, [timestamp]
FROM LOG 
ORDER BY 2 DESC

Или даже:

SELECT id, [timestamp] AS Time_Stamp
FROM LOG 
ORDER BY Time_Stamp DESC
...