0

我需要从 MSSQL 数据库中选择一个日期范围,但 s.ended 字段尚未设置为日期时间字段。它已设置为 varchar,存储日期的格式为 d/m/Y.

我已经尝试了以下是子句,但我收到以下错误消息。有谁知道我如何在不改变数据库设计的情况下解决这个问题?

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 数据类型转换为 datetime 数据类型导致值超出范围。

4

3 回答 3

2

试试这个:

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))
于 2012-08-28T14:20:49.933 回答
1

在与值进行比较之前,可能存在S.ended不正确的格式。Datetime

所以首先将该值转换为日期时间,然后进行比较。

于 2012-08-28T14:21:59.813 回答
-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”

于 2012-08-28T13:49:06.723 回答