1

テーブルの1つに列「month_year」(varchar(10))を取得しました。このクエリがあります

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

これら 2 つの間の month_year 値を持つ行を表示したいのですが、クエリは年の部分を無視しているようで、これら 2 つの月の間にあるすべての行が返されます。このクエリは、@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_yearvarcharYYYYMM'201106''201210''2011/06''2012/10''/'

于 2012-12-03T17:50:25.050 に答える