在我的一个表中有一个列“month_year”(varchar(10)),我有这个查询
select *
from costs
where month_year>='06/2011'
and month_year<='10/2012'
我想显示在这两个月之间具有月_年值的行,但查询似乎忽略了年部分,并给了我这两个月之间的所有行,这个查询在一个接收 @min_month_year 的存储过程中和@max_month_year 参数。
在我的一个表中有一个列“month_year”(varchar(10)),我有这个查询
select *
from costs
where month_year>='06/2011'
and month_year<='10/2012'
我想显示在这两个月之间具有月_年值的行,但查询似乎忽略了年部分,并给了我这两个月之间的所有行,这个查询在一个接收 @min_month_year 的存储过程中和@max_month_year 参数。
在列中存储date
值不是很好的设计
但是你可以做这样的事情varchar
select *
from costs
where
convert(datetime, '01/' + month_year, 103) >='20110601' and
convert(datetime, '01/' + month_year, 103) < '20121101'
但是您month_year 列上的索引将不起作用。
如果您真的想存储month_year
为varchar
,我建议您将其存储为-YYYYMM
和'201106'
('201210'
如果您真的喜欢)。在这种情况下,您可以在不转换的情况下进行比较。'2011/06'
'2012/10'
'/'