• ベストアンサー

Nヶ月前の1日を取得したいのですが

今回はじめてvb6のプログラムを作成します。 処理概要は、access2000のテーブルからNヶ月前の1日以降の日付を持つデータを抽出するです。 この場合に、日付の算出はどのような記述になるのでしょうか? 算出のロジックはsqlの中に記述せずに、別エリアに編集してテーブルの項目Aと>=で比較したいのですが。 なお、テーブルの項目のデータ型はcharです。 お手数ですが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

Sub test()   Dim strDmyDate As String      Dim intYear   As Integer   Dim intMonth  As Integer   Dim intBeforMonth  As Integer      Dim datDate   As String   Dim strDate   As String      'ダミーデータ   strDmyDate = "20020107"      '何ヶ月前?   intBeforMonth = 6 'この場合6ヶ月前      '年月を抽出   intYear = Left(strDmyDate, 4)   intMonth = Mid(strDmyDate, 5, 2)      'Nヶ月前の一日を、日付型で算出   datDate = DateSerial(intYear, intMonth - intBeforMonth, 1)      'フォーマット変換   strDate = Format(datDate, "yyyymmdd") End Sub 見せてもらったデータからすると、strDateの値をSQL文にそのまま使用できます。 ただ、文字列なので "select * from テーブル where 項目A >= '" & strDate &"'" といったように シングルコーテーションを忘れないようにしてください。

kiyoto
質問者

お礼

回答ありがとうございました。 おかげさまで解決いたしました。

その他の回答 (1)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

charとありますので、データの無いよう次第でアドバイスが変わるとおもいます。 どんなデータが入っているのでしょう? (1)20020107 (2)020107 (3)2002/01/07 これ意外にも様々な格納法則が考えられます。 現在のデータを一部公開してください。

kiyoto
質問者

補足

説明不足で申し訳ありませんでした。 補足します。 データの内容は、20020107と設定されています。 基準日がが20011213の場合、2001601を算出します。 今回の処理で、基準日はシステム日付を使用します。

関連するQ&A