- ベストアンサー
日付から月末を取得したい
初めての投稿です。 access2000を使用しております。 クエリーを使用して日付フィールドからその月の月末を表示させたいと思っております。月末が土曜日や日曜日の場合は、その前日あるいは前々日の金曜日を月末にしたい。 ご教授のほどよろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
クエリだけではチョット厳しそうなので、ユーザ定義関数で月末を求めます。 標準モジュールに記述するのは以下 Public Function GetLastDay(vD As Variant) As Variant Dim vRet As Variant Dim i As Integer vRet = Null If (IsDate(vD)) Then vRet = DateAdd("m", 1, Format(vD, "yyyy/mm")) - 1 i = Weekday(vRet, 7) If (i <= 2) Then vRet = vRet - i End If GetLastDay = vRet End Function クエリからの呼び出し方) クエリのSQLビュー表示での記述例 テーブル1にフィールド [日付] があり、その日付で月末を求めるには、 SELECT 日付, GetLastDay(日付) AS 月末 FROM テーブル1; ※ ユーザ定義関数では、NULL の日付も処理できるように、受け/戻しに Variant 利用 日付なら翌月1日の前日を求め、Weekday 土曜日基準で 2 以下の時には、さらに土曜日基準値を減算 Weekday 2つ目のパラメータに 7 で、土曜日から 1,2,3・・・ の値が返ってくるので 2 (日曜)以下なら翌月1日の前日から、1 or 2 を減算 ※ 関数名は、適宜変更してください。
お礼
30246kiku さんへ。 早速のご回答、ありがとうございました。 分かりやすいご説明まで頂きまして感謝致します。 これでやりたいと思っていた事項が解決しました。 今後ともご指導方よろしくお願いいたしますと共に重ねて御礼申し上げます。