• 締切済み

日付/時刻型のフィールドに対してWhere条件を付ける方法

VBAで開発しています。 Where句で、日付/時刻型のA_dateに対して WHERE A_date > 2008/05/01 といったような条件を付けたいのですが、 どうしてもうまくいきません。 WHERE A_date > Format(2008/05/01, "YYYY/MM/DD") のようにフォーマットしてみてもだめでした。 WHERE A_date > date() のような記述はちゃんと通るんですが、固有の日付とのSQLがうまくいきません。 日付/時刻型の条件付けは何か特別な記述が必要なのでしょうか? どなたかご回答よろしくお願い致します。

みんなの回答

  • Tiffa9900
  • ベストアンサー率31% (68/216)
回答No.3

説明不足ですみません。 convert関数は、SQL-Server側の関数です。 VBA側ではなく、SQL-Serverへ渡しているクエリ内に含めて大丈夫です。 2008/05/01 がWK_HIZUKEという変数に格納されているとすると、 SQL_STRING = "~ WHERE A_date > convert(datetime,'" & WK_HIZUKE & "' ~" 恐らくこんな感じかな? 変数でなければ、 SQL_STRING = "~ WHERE A_date > convert(datetime,'2008/05/01' ~" こんな感じ?

noname#169207
質問者

お礼

再度アドバイスありがとうございます! せっかくなのですが、Accessのクエリで試してもconvertは未定義だと出てしまいまして… 使っているのはSQL-Serverのはずなのですが、Access経由だとだめなのでしょうか? あと、色々と試してみたところ、テーブルの方の日付をスラッシュを抜いた日付にフォーマットするとうまくいきそうでした。 なんとか解決できそうです。 せっかくアドバイス頂いたのにすみません。 VBAじゃない開発環境の時にぜひ試させていただきます。

すると、全ての回答が全文表示されます。
  • Tiffa9900
  • ベストアンサー率31% (68/216)
回答No.2

比較する場合には、左右のタイプを合わせた方が好ましいと思います。 A_date のタイプが日付/時刻型ですので、  convert(datetime,'2008/05/01') こんな感じではどうでしょうか?

noname#169207
質問者

補足

アドバイスありがとうございます。 早速試してみましたが、convertが未定義関数だとエラーが出てしまいまして… VBAではconvert関数は使えないのでしょうか。

すると、全ての回答が全文表示されます。
noname#140971
noname#140971
回答No.1

>CHAR型や DATE型は、それらの値をシングルクォーテーション(’)で囲みます。 が、注意事項の一つです。

noname#169207
質問者

補足

アドバイスありがとうございます。 ですが、それは既に試してあるのですが 「抽出条件でデータ型が一致しません」 とエラー文が出ただけでした…

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう