0

我想编辑一个查询,但我被卡住了。我想按日期订购(最初是“2012-12-28”),但我读到它必须转换为 unix 时间戳才能做到这一点。我不知道我是否做错了所以请帮助我!奇怪的是,当我单独执行 DATEDIFF 时没有问题。但是当我把它放在查询中时。

有人可以帮我吗?这是查询。简化了课程。

"SELECT TOP 6 * FROM jd_lighthouses WHERE locations_aanvang != '' ORDER BY DATEDIFF(s, '1970-01-01', '2012-12-28 00:00:00 +1:00') DESC";

我得到的错误是:

A constant expression was encountered in the ORDER BY list position 1

提前致谢!

亲切的问候,布拉姆

评论后这里是真正的代码:

"SELECT TOP 6 * FROM jd_lighthouses WHERE locations_aanvang != '' ORDER BY DATEDIFF(s, '1970-01-01', locations_aanvang+' 00:00:00 +1:00') DESC"

4

1 回答 1

1

在语法上你可以做

ORDER BY (SELECT DATEDIFF(s, '1970-01-01', '2012-12-28 00:00:00 +1:00')) DESC

这是完全没有意义的,但已经优化(没有排序发生)。

所有行的值DATEDIFF(s, '1970-01-01', '2012-12-28 00:00:00 +1:00')都相同,因此在ORDER BY

您的意思是引用列而不是使用硬编码的日期吗?

ORDER  BY DATEDIFF(s, some_column, '2012-12-28 00:00:00 +1:00') DESC 
于 2013-01-24T17:07:45.667 回答