テーブルに日付データが入っていて(datetime型)、フォームから、年月を指定して絞り込みたい場合の処理

フォームから、年もしくは、月を文字列としてSQLサーバに投げる。

--------------------------------------------------------------------------------------------------

サンプル

Me.LIST請求予定.RowSource = "EXEC sp_経理用請求予定一覧 " & Me.OpenArgs & ",'" & Me.cmb請求年 & "','" & Me.cmb請求月 & "'"

--------------------------------------------------------------------------------------------------

注意:文字列なので、フォームの値には’’を付け忘れないように!

文字列として受け取った「年」もしくは、「月」をテーブルの年月と比較するために、CONVERTを使って文字列に変更する。

--------------------------------------------------------------------------------------------------

サンプル

WHERE tbl_請求予定マスタ.工事番号 = @Kouji_No AND tbl_請求予定マスタ.削除フラグ = 0

AND CONVERT(VARCHAR(4),YEAR(tbl_請求予定マスタ.年月)) LIKE '%' + RTRIM(ISNULL(@myYear,'')) + '%'

AND SUBSTRING(CONVERT(varchar(10),tbl_請求予定マスタ.年月,111),6,2) LIKE '%' + →         →RTRIM(ISNULL(@myMonth,'')) + '%'

--------------------------------------------------------------------------------------------------

テーブルデータの年月をMONTH関数で抜き出すと、1月になってしまう。

月に関しては、フォーム上は2桁表示(01月)なので、抽出されなくなる。

そのため、いったんyyyy/mm/dd形式にして、文字列化し、6文字目から2文字を抽出している(SUBSTRING)

おすすめの記事