• ベストアンサー

[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初心者なので簡潔に教えてくださったら助かります。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

質問1 翌月の初日の前日って何ですか?当月の末日ですよね。 10月の翌月は何月ですか?11月ですね。じゃあ(2005,11,1)となって いたら2005年11月1日だと分かりますか?これは分かりますね。 11月を10+1月と書くと、もう分かりませんか? そうです。(2005,11,1)と(2005,10 + 1,1)は同じ意味なんです。 DateSerial(2005,10+1,1)=DateSerial(2005,11,1)=2005年11月初日 ここから1を引く=前日を求める=2005年10月末日を求める です。 だから、2005年10月末日 = 2005年11月初日 - 1 という式になります。 質問2 もう分かるでしょう。翌月の末日=翌々月の初日-1です。 翌々月というのは当月+2ですよね。 だから、(DateSerial(2005,10+2,1)-1→2005/10/31 は間違い。 (DateSerial(2005,10+2,1)-1→2005/11/30 です。 何でこういうことをするかと言うと、2月の末日を得る方法が、コレ なんです。「西暦年を4で割って余りがでたら・・・」なんてやるより、 3月1日の前日を求める方が遥かに簡単ですからね。

sakura3465
質問者

お礼

アドバイス有難うございます。大変参考になりました。

その他の回答 (3)

  • gatt_mk
  • ベストアンサー率29% (356/1220)
回答No.3

DateSerial関数は単にyyyy(年)、mm(月)、dd(日)の数字を使って日付データを作成する関数です。 DateSerial(yyyy,mm,dd)とするとyyyy/mm/ddの日付データができます。 http://msdn.microsoft.com/ja-jp/library/cc410236.aspx DateSerial(2005,12,1)は2005/12/1です。 DateSerial(2005,12,1)-1は2005/11/30です。

sakura3465
質問者

お礼

アドバイス有難うございます。大変参考になりました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

#1です。 ちょっと見落とし。 >(DateSerial(2005,10+2,1)-1→2005/10/31 2005/12/01の1日前ですから、2005/11/30ではないの?

sakura3465
質問者

お礼

アドバイス有難うございます。大変参考になりました。

sakura3465
質問者

補足

入力ミスを指摘してくださって有難うございます。2番目の質問についてですが、正しくは、(DateSerial(2005,10+2,1)-1→2005/11/30です。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>DateSerial(2005,10+1,1) 2005年・(10+1)月・1日⇒2005年11月1日 ですから、その1日前(-1)です。 質問2も同じ考えです。

関連するQ&A