2013-01-24 66 views
0

我正在編輯一個查詢,我在MS SQL中生成。 我需要訂購日期的項目,但是會給出錯誤。 locations_aanvang給出2012-08-12(yyyy-mm-dd)。所以我把它擴展到東部時間的2012-08-12 00:00:00 +1:00。 所以要訂購我需要將其轉換爲Unix時間戳(正確?)。由DATEDIFF命令給轉換失敗錯誤

查詢是:

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.

我到底做錯了什麼?我能做到這一點更容易嗎?

在此先感謝!

親切的問候, 布拉姆錘

+0

爲什麼你不能僅僅通過locations_aanvang DESC' –

+0

我無法理解你正在試圖獲得什麼用'爲了...頂6是什麼?最新? – Edwin

+0

locations_aanvang字段是日期類型還是varchar字段? – Sparky

回答

0

因爲我們can'r澄清質疑,只是幫助的是:如果 是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 
+0

當我這樣做時,我仍然得到錯誤 轉換日期和/或時間從字符串轉換失敗 –

+0

這意味着'locations_aanvang'不包含正確的日期。您在「locations_aanvang」中存儲了哪些數據? –

+0

aa是看到問題..有些字段填充'22-03-2012'而不是'2012-03-22'。現在做什麼? –

0

嗯。讓我採取一個刺。

  1. 我認爲MS SQL警告不要按列/計算排序, 並不直接返回SQL的結果。這在Oracle中絕對是如此 。
  2. 我假設你可以爲你的 變量插入一個文字值,它運行得很好嗎?
相關問題