2012-08-28 99 views
0

我需要選擇從MSSQL數據庫,但s.ended領域還沒有被設置爲一個日期時間字段的日期範圍。它已被設置爲一個varchar,存儲日期的格式爲d/m/YSQL服務器轉換爲varchar到日期時間選擇日期範圍

我已經試過了如下條款,但我得到了以下錯誤消息。有沒有人知道我如何能夠在不改變數據庫設計的情況下實現這一目標?

WHERE子句:

WHERE 
    (S.ended > CONVERT(DateTime, '28/07/2012 00:00:01', 103)) 
    AND (S.ended < CONVERT(DateTime, '28/08/2012 00:00:01', 103)) 

錯誤消息:

varchar數據類型爲日期時間數據類型的轉換導致了超出範圍的值的。

+2

如何被存儲的數據?適當的日期時間格式? – Diego

+0

你是否將varchar字段包裝在CONVERT中? –

+0

日期存儲爲一個varchar,這是我的問題。你可以在where子句中看到我已經使用了convert。我不明白我應該把這個放在哪裏。 – LeeTee

回答

1

試試這個:

WHERE 
    (CONVERT(DateTime, S.ended, 103) > CONVERT(DateTime, '28/07/2012 00:00:01', 103)) 
    AND (CONVERT(DateTime, S.ended, 103) < CONVERT(DateTime, '28/08/2012 00:00:01', 103)) 
+0

工作,謝謝 – LeeTee

-1
WHERE (S.ended > CONVERT(DateTime, '28/07/2012 00:00:01', 103)) AND (S.ended < CONVERT(DateTime, '28/08/2012 00:00:01', 103)) 

可能更改日期的美國風格,而不是日期'28/07/2012 00:00:01' 的嘗試'07/28/2012 00:00:01'

+1

轉換很好,因爲指定了「103」。 http://msdn.microsoft.com/en-us/library/ms187928.aspx – feathj

1

有可能是一個機會,S.ended是不正確的格式與比較之前價值。

所以首先將該值轉換爲日期時間,然後進行比較。

相關問題