2014-09-02 62 views
0

我的SQL Server WHERE條件如下。將varchar數據類型轉換爲日期時間數據類型導致Sql Server中出現超出範圍的值

WHERE ([Orders].ORTakenDate >= CONVERT(DATETIME, '2014-08-13 00:00:00', 105) 
AND [Orders].ORTakenDate <= CONVERT(DATETIME, '2014-09-29 00:00:00', 105)) 

數據類型爲DATETIME2,當我執行這給了我的錯誤:你爲什麼要使用格式105這個

錯誤

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. 

回答

1

?使用正確的格式爲YYYY-MM-DD格式,121:

 WHERE ([Orders].ORTakenDate >= CONVERT(DATETIME, '2014-08-13 00:00:00', 121) AND 
       [Orders].ORTakenDate <= CONVERT(DATETIME, '2014-09-29 00:00:00', 121)) 

的格式記錄here

編輯:

SQL服務器通常識別日期常量格式爲YYYY-MM-DD,所以你應該能夠簡化這:

 WHERE ([Orders].ORTakenDate >= '2014-08-13' AND 
       [Orders].ORTakenDate <= '2014-09-29' 
      ) 

(這裏有一個案例具有國際日期常數沒有正確解釋的格式)

+0

謝謝,它爲我工作。 – Tashi 2014-09-02 11:14:27

+0

但是當我從後面的c#代碼使用這個查詢時,它給我錯誤。 – Tashi 2014-09-02 11:22:16

+0

數據讀取器與指定的「GetAllOrdersDetailsByDate」不兼容。類型成員'SSMA_TimeStamp1'在數據讀取器中沒有相應的列,名稱相同 – Tashi 2014-09-02 11:23:53

0

105格式日期'2014-09-29 00:00:00'將29視爲超出範圍的月份。

因此,無論你應該重新安排你的字符串或當您使用105那麼日期應該是在dd-MM-yyyy hh:mm:ss甲使用不同格式

+0

我的數據庫條目是2014年8月13日00:00:00這樣 – Tashi 2014-09-02 11:13:36

0
in SQL it might be 

WHERE ([Orders].ORTakenDate >= cast('2014-08-13 00:00:00' as datetime) 
        AND [Orders].ORTakenDate <= cast('2014-09-29 00:00:00' as datetime) 

------------------------OR-------------------------------------------------- 

WHERE ([Orders].ORTakenDate >= CONVERT(DATETIME, '13-08-2014 00:00:00', 105) 
        AND [Orders].ORTakenDate <= CONVERT(DATETIME, '29-09-2014 00:00:00', 105)) 
0

..

所以使用這樣

WHERE ([Orders].ORTakenDate >= CONVERT(DATETIME, '13-08-2014 00:00:00', 105) 
AND [Orders].ORTakenDate <= CONVERT(DATETIME, '29-09-2014 00:00:00', 105)) 

更新:

如果你是從C#通過日期,那麼首先轉換dd-MM-yyyy hh:mm:ss甲酸鹽的值..

+0

SELECT訂單。*,訂單明細] * \t \t FROM dbo.Orders INNER JOIN dbo。[Sales Ledger Transactions] ON dbo.Orders.ORSTMN = dbo。[Sales Ledger Transactions] .STMN INNER JOIN dbo。[Order Details] ON dbo。[Order Details] .ODORMN = dbo。 Orders.ORMN WHERE([Orders] .ORTakenDate> = CONVERT(DATETIME,'13 -08-2014 00:00:00',105) AND [Orders]。ORTakenDate <= CONVERT(DATETIME,'29 -09-2014 00:00:00' ,105)) \t \t \t \t \t ORDER BY DBO。[訂單詳情] .ODMN DESC – Tashi 2014-09-02 11:49:34

+0

其給出誤差與靜態值 – Tashi 2014-09-02 11:49:51

+0

誤差:數據讀取器與指定的「GetAllOrdersDetailsByDate_Result」不兼容。類型成員'SSMA_TimeStamp1'在數據讀取器中沒有相應的列,名稱相同。 – Tashi 2014-09-02 11:50:51

相關問題