質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

1156閲覧

Access 月曜当日に先週の月曜日から日曜日までの日付を8桁で表示するには?

Keith

総合スコア25

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2023/07/11 01:26

事務職にてAccessを使用しております。

Between演算子を使用し、1週間のうちどこで集計しても「先週の月曜日から先週の日曜日まで」の日付を8桁で表示させるよう抽出条件を記述しています。

当初、下記のように記述を試みました。

Between Format(DateAdd("d",-Weekday(Date(),3),Date()-7),"yyyymmdd") And Format(DateAdd("d",-Weekday(Date(),2),Date()),"yyyymmdd")

イメージ説明

今日が7月11日火曜日の場合、下記のように20230703から20230709までの7日間が表示されればOKとなります。

イメージ説明

上記記述だと火曜日以降に集計すると目的の値が抽出されますが、
月曜当日に集計を実行すると、下記のように2週間分(14日分)の日付が抽出されてしまいます。

イメージ説明

月曜当日に集計しても、問題なく7日分の日付を抽出するにはどのような記述がベストでしょうか?
ご教示頂けますと幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Between演算子を使用し、1週間のうちどこで集計しても「先週の月曜日から先週の日曜日まで」の日付を8桁で表示させるよう抽出条件を記述

正しくは「今週の日曜日まで」であり、また[請求日]のデータ型がテキスト型であると仮定した場合。

SQL

1PARAMETERS [基準日を入力] DATETIME; 2SELECT [MACH_SUB_請求明細ファイル].[請求日], 3 Weekday(Format([MACH_SUB_請求明細ファイル].[請求日],"0000/00/00"),2) AS [月曜日を週初日とした場合の請求日の曜日], 4 Nz([基準日を入力],Date()) AS [基準日], 5 DateAdd("d",1-Weekday(Nz([基準日を入力],Date()),2),Nz([基準日を入力],Date())) AS [基準日の週初日], 6 DateAdd("d",7-Weekday(Nz([基準日を入力],Date()),2),Nz([基準日を入力],Date())) AS [基準日の週末日], 7 DateAdd("d",-6-Weekday(Nz([基準日を入力],Date()),2),Nz([基準日を入力],Date())) AS [基準日の前週初日], 8 DateAdd("d",-Weekday(Nz([基準日を入力],Date()),2),Nz([基準日を入力],Date())) AS [基準日の前週末日] 9FROM [MACH_SUB_請求明細ファイル] 10WHERE (IsDate(Format([MACH_SUB_請求明細ファイル].[請求日],"0000/00/00")) = True) 11 AND ([MACH_SUB_請求明細ファイル].[請求日] BETWEEN Format(DateAdd("d",-6-Weekday(Nz([基準日を入力],Date()),2),Nz([基準日を入力],Date())),"yyyymmdd") 12 AND Format(DateAdd("d",-Weekday(Nz([基準日を入力],Date()),2),Nz([基準日を入力],Date())),"yyyymmdd")) 13ORDER BY [MACH_SUB_請求明細ファイル].[請求日];

クエリパラメータ[基準日を入力]には日付/時刻型の値を入力して下さい。
(省略時は現在のシステム日付を基準日とします)

投稿2023/07/11 02:14

編集2023/07/11 02:17
sk.exe

総合スコア1059

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Keith

2023/07/11 06:31

sk.exe 様 ありがとうございます。おっしゃる通り「先週の日曜日」という認識がそもそもの誤りだったようです。ご丁寧かつ実用的なご回答を頂きありがとうございます。 ご両名様とも大変に有用なアドバイスを頂戴し、大変にありがとうございました。 とても有り難いご回答でしたが、ベストアンサーは最初にご回答頂きましたhatena19様へとつけさせて頂きました。この度は良いお知恵をお貸し頂き、ありがとうございました。本件はこれにて失礼致します。
guest

0

ベストアンサー

下記でどうでしょう。

Between Format(DateAdd("d",-Weekday(Date(),2)-6,Date()),"yyyymmdd") And Format(DateAdd("d",-Weekday(Date(),2),Date())),"yyyymmdd")

投稿2023/07/11 01:57

hatena19

総合スコア34345

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Keith

2023/07/11 06:27

hatena19 様 抽出できました。こちらが当初意図した書式に合わせてのご回答を頂きありがとうございます。大変速やかなご回答、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問