2014-09-02 65 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

相关问题