1

在我的一个表中有一个列“month_year”(varchar(10)),我有这个查询

select *
from costs 
where month_year>='06/2011'
and month_year<='10/2012'

我想显示在这两个月之间具有月_年值的行,但查询似乎忽略了年部分,并给了我这两个月之间的所有行,这个查询在一个接收 @min_month_year 的存储过程中和@max_month_year 参数。

4

1 回答 1

3

在列中存储date值不是很好的设计 但是你可以做这样的事情varchar

select *
from costs 
where
    convert(datetime, '01/' + month_year, 103) >='20110601' and
    convert(datetime, '01/' + month_year, 103) < '20121101'

但是您month_year 列上的索引将不起作用。
如果您真的想存储month_yearvarchar,我建议您将其存储为-YYYYMM'201106''201210'如果您真的喜欢)。在这种情况下,您可以在不转换的情况下进行比较。'2011/06''2012/10''/'

于 2012-12-03T17:50:25.050 回答