我想编辑一个查询但是我被卡住了。我想按日期订购(最初是'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
提前致谢!
亲切的问候, BRAM
这里的评论是真实的代码:
"SELECT TOP 6 * FROM jd_lighthouses WHERE locations_aanvang != '' ORDER BY DATEDIFF(s, '1970-01-01', locations_aanvang+' 00:00:00 +1:00') DESC"
答案 0 :(得分: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