我有一个简单的 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';
我有一个简单的 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';
您需要使用对所有语言和区域设置都安全的日期字符串格式。
ISO-8601 格式YYYYMMDD
(注意:没有破折号!)适用于所有情况 - 试试这个:
select *
from [ComplainsDb].dbo.dateTB
where ourdate between '20121101' AND '20121231';
尝试转换为日期如下:
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';
您需要将字符串转换为日期:
select *
from [ComplainsDb].dbo.dateTB
where ourdate between Cast('2012-11-01' AS Date) AND Cast('2012-12-31' AS Date);