按DATEDIFF排序给出转换失败错误

时间:2013-01-24 18:02:32

标签: sql-server date select sql-order-by datediff

我正在编辑我在ms sql中构建的查询。 我需要在日期订购商品,但这会产生错误。 locations_aanvang给出2012-08-12(yyyy-mm-dd)。所以我把它延长到2012-08-12 00:00:00 +1:00的EST时间。 所以为了命令我需要将它转换为unix时间戳(对吗?)。

查询是:

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

我得到的错误是: [Microsoft][SQL Server Native Client 10.0][SQL Server]Conversion failed when converting date and/or time from character string.

我做错了什么?我能更容易地做到这一点吗?

提前致谢!

亲切的问候, Bram Hammer

2 个答案:

答案 0 :(得分:0)

嗯。让我一拍。

  1. 我认为MS SQL警告不要按列/计算进行排序 不是直接返回SQL的结果。这绝对是这样 在Oracle中
  2. 我猜你可以插入一个字面值     变量,它运行得很好吗?

答案 1 :(得分:0)

因为我们无法澄清质疑,只有帮助: 如果locations_aanvang是字符类型,那么您可以避免错误更改代码,如下所示:

DATEDIFF(s, '1970-01-01', locations_aanvang + ' 00:00:00')

由于您使用SQL Server Native Client 10.0,我假设您拥有SQL Server 2008DATE数据类型。要获得最新的位置,请使用:

ORDER BY CAST(locations_aanvang as DATE) DESC