2011-07-13 18 views
0

日付がvarcharとして保存されているテーブルがDD.MM.YYYYの形式になっています。SQL文のヘルプが必要

私はこのテーブルをクエリし、月と年に基づいて結果を返すストアドプロシージャを作成しました。

私はMMYYYYの2つの入力パラメータを文字列として使用します。

月と年に一致するすべてのアイテムを取得するには、where句を使用しますか? varcharフィールドであるため、LIKE演算子を使用する必要があると思われます。

私のSQLは錆びています。

+0

これは何RDBMSですが? – Jacob

+0

MS SQL Server 2008 R2 –

答えて

1
Select * from table1 t 
    where Month(Cast(t.DateCol as DateTime)) = Cast("1" as bigint) 
    AND Year(Cast(t.DateCol as DateTime)) = Cast("2011" as bigint) 
1
WHERE field LIKE "%." + @month + "." + @year 

しかし、最善の方法は、varchar列を捨てやMSSQLsを使用し、新しい列で正しい日時値を移入するためのスクリプトを実行して、正しいデータ型を持つ新しい列を作成することです日時フィールドを検索する方法に組み込まれています。これにより、長期的にはより迅速なルックアップが得られます。

WHERE MONTH(field) = @month 
     AND YEAR(field) = @year 
+0

+1に変換してください。 – Jacob

+0

Doh、 "My SQL is rusty"と読みましたが、質問に「My MySQL is rusty」と書かれています。 :) –

+0

素敵なもの:D(15 ...) – Jacob

2

この(仮定@MMと@YYYYがあなたの入力パラメータです)試してみてください。

SELECT * 
    FROM <YOUR_TABLE> 
WHERE <DATE_COLUMN> LIKE '[0-9][0-9].' + @MM + '.' + @YYYY 
0
SELECT * FROM t1 WHERE RIGHT(datecol,7)= @StringMM + "." + @StringYYYY