ORDER BY显然不适用于Datetime列?

时间:2019-01-08 17:32:42

标签: sql-server datetime sql-order-by

我有一个小表,用于使用这种模式的每日日志:

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关键字,查询结果将以ID列的顺序返回(1-8)。因此,看来我实际上是按ID而不是时间戳进行排序。

我想念什么吗? ID栏是否有问题?

2 个答案:

答案 0 :(得分:1)

我在一个名为TIMESTAMP的字段上遇到了一些问题,可能是因为它是保留字。 我已经在我的机器上进行了测试,并且如您所显示的那样工作正常,但是问题可能取决于SQL版本。我会尝试伪造系统以将其标识为字段:

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

或者:

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

甚至:

{{1}}

答案 1 :(得分:0)

您可以尝试:

SELECT id, timestamp 
FROM LOG 
ORDER BY TIMESTAMP + 1 DESC