質問: DATEADD('m',7,visited_dt) SELECT * FROM tmp1 WHERE NOW() < a ↑二回に分けて行った結果、これならOK。 ``` よろしくお願いいたします。
回答: Access2016で検証してみました。 クエリではDateaddしても結果は返しましたがVBAでは多分失敗すると思います。 理由は下記になります。 ここを参照すると戻り値はVariant型になっています。 今回実行しようとしているSQLの形にしようとするならば一度Dateadd後に日付型に意図的に変換した後に実行する方法が簡単だと思います。 ``` Dim visited_dt As Date Dim AddDate_dt As Date visited_dt = #5/20/2019# AddDate_dt = DateAdd("m", 7, visited_dt) ``` いかがでしょうか? 追記 まずバグの可能性を疑ってみてサービスパックは適用されていますか? 続いて Access2007で再度検証してみました。 テストテーブルを作ってみました。 クエリで1行ずつ実行しました ``` create table tmp2 (id integer , visited_dt datetime); insert into tmp2 values (1,#2018/10/19#); insert into tmp2 values (2,#2018/10/20#); insert into tmp2 values (3,#2018/10/21#); SELECT * FROM tmp2 WHERE Now()< DateAdd('m',7,visited_dt); ``` この構成で必要な要件を満たしていればいいのですが、、、 結果は2019/05/20現在で2018/10/21のレコードのみ抽出されたのを確認しました。 上記のSQLでテストテーブルでSELECTまで確認してみてはいかがでしょうか? 実行されれば本番SQLのどこかに不具合がありそうです。