获取2个自定义varchar日期值之间的记录

时间:2012-12-03 17:43:35

标签: sql tsql sql-server-2005

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

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

我想显示在这两者之间具有month_year值的行,但是查询似乎忽略了year部分并且给了我这两个月之间的所有行,此查询位于接收a的存储过程中@min_month_year和@max_month_year参数。

1 个答案:

答案 0 :(得分: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_year存储为varchar,建议您将其存储为YYYYMM - '201106''201210''2011/06''2012/10'如果你真的喜欢'/')。在这种情况下,您可以在不转换的情况下进行比较。