0

我正在编辑我在 ms sql 中构建的查询。我需要按日期订购商品,但这会出错。 locations_aanvang给出2012-08-12(yyyy-mm-dd)。所以我把它延长到2012-08-12 00:00:00 +1:00美国东部时间。因此,要订购我需要将其转换为 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.

我究竟做错了什么?我可以更容易地做到这一点吗?

提前致谢!

亲切的问候,布拉姆·哈默

4

2 回答 2

0

嗯。让我来一刀。

  1. 我认为 MS SQL 警告不要按不直接返回 SQL 结果的列/计算进行排序。在 Oracle 中绝对是这样。
  2. 我假设你可以为你的变量插入一个文字值并且它运行得很好?
于 2013-01-24T18:09:53.447 回答
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
于 2013-01-24T18:16:35.257 回答