0

我有一个简单的 SQL Server 2008 表,其中有一列ourdate类型为date.

所以我尝试应用between日期值,但它不起作用并给我一个错误。

消息 241,级别 16,状态 1,第 1 行
从字符串转换日期和/或时间时转换失败

像这样的代码:

select * 
from [ComplainsDb].dbo.dateTB 
where ourdate between '2012-11-01' AND '2012-12-31';
4

3 回答 3

3

您需要使用对所有语言和区域设置都安全的日期字符串格式。

ISO-8601 格式YYYYMMDD(注意:没有破折号!)适用于所有情况 - 试试这个:

select * 
from [ComplainsDb].dbo.dateTB 
where ourdate between '20121101' AND '20121231';
于 2012-11-13T16:47:32.113 回答
2

尝试转换为日期如下:

select *
from dateTB  
where ourdate between convert(datetime,'2012-11-01') and convert(datetime,'2012-12-31');

select *
from dateTB  
where convert(datetime,ourdate) between '2012-11-01' and '2012-12-31';

你也可以使用 cast 如下

select *
from dateTB  
where ourdate between cast('2012-11-01' as datetime) and cast('2012-12-31' as datetime);

select *
from dateTB  
where cast(ourdate as datetime) between '2012-11-01' and '2012-12-31';
于 2012-11-13T16:52:30.500 回答
1

您需要将字符串转换为日期:

select * 
from [ComplainsDb].dbo.dateTB 
where ourdate between Cast('2012-11-01' AS Date) AND Cast('2012-12-31' AS Date);
于 2012-11-13T16:50:34.140 回答