プロが教えるわが家の防犯対策術!

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がうまくいきません。
日付/時刻型の条件付けは何か特別な記述が必要なのでしょうか?

どなたかご回答よろしくお願い致します。

A 回答 (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' ~"
こんな感じ?
    • good
    • 0
この回答へのお礼

再度アドバイスありがとうございます!
せっかくなのですが、Accessのクエリで試してもconvertは未定義だと出てしまいまして…
使っているのはSQL-Serverのはずなのですが、Access経由だとだめなのでしょうか?

あと、色々と試してみたところ、テーブルの方の日付をスラッシュを抜いた日付にフォーマットするとうまくいきそうでした。
なんとか解決できそうです。
せっかくアドバイス頂いたのにすみません。
VBAじゃない開発環境の時にぜひ試させていただきます。

お礼日時:2008/06/23 10:52

比較する場合には、左右のタイプを合わせた方が好ましいと思います。


A_date のタイプが日付/時刻型ですので、
 convert(datetime,'2008/05/01')
こんな感じではどうでしょうか?

この回答への補足

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

補足日時:2008/06/23 10:33
    • good
    • 0

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



が、注意事項の一つです。

この回答への補足

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

補足日時:2008/06/23 10:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!