• ベストアンサー

ACCESS クエリ 「先々月末日」 を求める関数

ACCESSのクエリ上にて 作業をする日が属する月の「先々月末日」を返す関数を教えて頂きたく存じます。 先々月初は 「 DateSerial(Year(Date()),Month(Date())-2,1)」 で求める事が出来ましたが、先々月末日がうまくいきません。 何卒よろしくお願いいたします。

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (295/459)
回答No.2

DateSerial(Year(Date()),Month(Date())-1,0) で求められます。

bambu3340
質問者

お礼

大変助かりました。 -1と0の扱いを工夫すれば良かったんですね。 ありがとうございました。

その他の回答 (1)

  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.1

先々月初が求められるのなら、後は簡単では? 先々月末は言い方を変えれば、先月初の前日である。 DateSerialでマイナス1すれば、前日になる。

bambu3340
質問者

お礼

ご回答ありがとうございました。 言葉に置き換えて考えると分かり易いですね。 大変助かりました。

関連するQ&A

  • 月末日の求め方

    ACCESS97で作られていたアプリをWEBで再開発することに なり、開発言語はJAVAで行うことになりました。 ACCESSでのコーディングでは、ユーザー入力された年、月とDATESERIAL関数を用いて月末日を求めています。 この処理をJAVAではどのようにコーディングすれば いいのでしょうか DATESERIAL関数に相当する関数があるのでしょうか? よろしくお願いいたします。

  • Accessでnヶ月後の翌日を返す私製関数について

    Accessである日の翌日から起算してnヶ月後の翌日を返す私製関数を作成しようとしています。VBAで、ある日を dt 、nヶ月のnを num 、として引数を定義し、下記のとおりfunctionプロシージャを作成しましたが、どうも変数の num が機能していないようで、常に1ヶ月後の翌日を返す関数となってしまっています。どのように改善すればよろしいか、どなたか教えてください。  なお、期間計算については、民法第143条のとおりに計算するようにします。 引用開始 第143条 週、月又は年によって期間を定めたときは、その期間は、暦に従って計算する。 2 週、月又は年の初めから期間を起算しないときは、その期間は、最後の週、月又は年においてその起算日に応当する日の前日に満了する。ただし、月又は年によって期間を定めた場合において、最後の月に応当する日がないときは、その月の末日に満了する。 引用終了 記 Function MultipleNmonth(dt As Date, num As Integer) As Date Dim kekka As Date If dt <> DateSerial(Year(dt), Month(dt) + 1, 0) Then If Day(dt) + 1 <= Day(DateSerial(Year(dt), Month(dt) + num + 1, 0)) Then kekka = DateSerial(Year(dt), Month(dt) + 1, Day(dt) + 1) Else kekka = DateSerial(Year(dt), Month(dt) + num + 1, 1) End If Else kekka = DateSerial(Year(dt), Month(dt) + num + 1, 1) End If MultipleNmonth = kekka End Function

  • アクセスでdateserialを使った式の意味と式ビルダ

    式の意味がわかりません。問題は「廃棄日」は、DateSerrial関数、year関数及び month関数を使用して「入荷日」の2年後における月末日とする。というものです。答は、 dateserial(year([入荷日]+2,month(入荷日)+1,0)となっていますが、2年後の意味はわかるのですが、何故monthに1を足すのか、dayの部分が0になるのかが、どうしても理解できません。 簡単なことかもしれませんが、どうか教えて下さい。 それと、式ビルダで作成しようとしても、うまく範囲が選択されず、いらない《》や文字が残ったりします。使い方がよくわからないのです。ヘルプを見ても記載されていないので悩んでいます。 どうぞよろしくお願いいたします。

  • [Access2003]メイン・サブフォームの演算テキストボックス:『DateSerial関数』

    メイン・サブフォームの演算テキストボックス:『DateSerial関数』にについてパソコン教室で勉強しています。(家庭の事情によりAccess2003のソフトは、家にはないです。)『DateSerial関数』についてよく分からないです。 参考書(下記の『DateSerial関数』の日付は、著作権の関係もあり、日付を変えてあります。 質問1:2005年10月末日の(DateSerial(2005,10+1,1)-1→2005/10/31の数式が理解できませんでした。 (DateSerial(2005,10+1,1)-1の2005,10は、2005年10月だと理解できました。 「(+1,1)-1」は、31日かなと思いましたが、どうして「(+1,1)-1」が31日を表しているのですか? 質問2: 2005年10月の翌月の月末の(DateSerial(2005,10+2,1)-1→2005/10/31の数式が理解できませんでした。 (DateSerial(2005,10+2,1)-1の2005は、2005年だと理解できました。「(10+2,1)-1」は、12月31日かなと理解できましたが、どうして「(10+2,1)-1」が12月31日を表しているのですか? *Access初心者なので簡潔に教えてくださったら助かります。

  • ACCESS クエリ 日付の条件でフラグ立て

    ACCESSクエリ上で [売上日][B][C] と言う並びのフィールドがあります。 [B]のフィールド条件に  ・[売上日]のデータが作業日の月の先月に属せば1を。   そうでなければ0を返す。 [C]のフィールド条件に  ・[売上日]のデータが作業日の月の先々月に属せば1を。   そうでなければ0を返す。 と言う指定したいと考えておりますが、上手くいきません。 Year([SalesDate])* 12 + DatePart("m", [SalesDate]) = Year(Date())* 12 + DatePart("m", Date()) - 1 では日付を返してしまうため、IIFと組み合わせようとしましたが上手くいきません。 上手いやり方を御存じの方がいらっしゃいましたら、何卒ご教授頂きたく存じます。 よろしくお願いいたします。

  • accessクエリの抽出条件

    access初心者です。 フィールド:「年」 数値型 フィールド:「月」 数値型 があり クエリの抽出条件に 年:2001 月:11 でクエリが実行できます。 これを当月分をクエリ実行できるように 年:year(date()) 月:month(date()) のように入れて当月のレコードを抽出したいのですが 「式に未定義関数dateがあります」というメッセージが出ます。どこが間違っているか助言をいただけると助かります。

  • アクセスで日付を年と月に区分する時に?

    こんばんは。アクセスで日付(依頼日)を年と月に区分する時に、クエリに下記のように関数の入力をしたのですが、うまくいきません。『式に未定義関数 '「年:Year'があります。』とでます。どこが悪いのか教えていただけないでしょうか?よろしくお願いします。 年:Year([依頼日]) 月:Month([依頼日])

  • エクセル VBAの日付計算?について

    現在sheet1にある表をsheet2に転記してゆくVBAを作成しております。sheet1にある日付データセルA1(日のみ)が入っているセルと月初を求めるVBA(DateSerial(Year(Date), Month(Date), 1))を加算して西暦/月/日にしたいのです。 例えば、DateSerial(Year(Date), Month(Date), 1)の答は、2005/05/01になってきます。そこに日付データセルA1が20だとすれば、表示は、2005/05/20となると思います。それをsheet2 セルA1に表示させたいのです。 よろしくお願いします。

  • AccessのDateSerial関数

    テーブルの「登録日」というフィールドに記入してある日付から、3年後の日付を表示させるためにフォームでDateSerial関数を使っています。 しかしこの関数を使ってみると、テーブルの「3年後日付」フィールドにはDateSerial関数で計算させた日付が入ってきません。 また、同じ事をクエリでもDateSerial関数を使って行ってみましたが、やはりテーブルには反映されませんでした。 どうすればテーブルに3年後の日付が反映されるようになりますか? かなりAccessの初心者なので変な事を聞いてしまっているかもしれませんが、どうぞアドバイスをよろしくお願い致します。

  • AccessのクエリをSQL Server2005で書き直したい。

    AccessのクエリをSQL Server2005で書き直したい。 誕生日の翌日を雇用契約の開始日(契約開始日)とするAccessのクエリがあります。 契約開始日: DateSerial(Year(Now()),Mid([生年月日],6,2),Right([生年月日],2)+1) (AccessのSQL文は:SELECT 給与台帳.生年月日, DateSerial(Year(Now()),Mid([生年月日],6,2),Right([生年月日],2)+1) AS 契約開始日 FROM 給与台帳;) これを SQL Server2005 に書き直したいのですが、その方法がわかりません。 どう書き直せばよろしいですか? よろしくお願いします。

専門家に質問してみよう