

SQL Server2005のクエリで「今週のデータ」を抽出したいのですがうまく出来ません。
between datename (weekday, getdate()) on datename(weekday, getdate() +6 )
「今週の」という条件は、本日の日付から週始めの月曜日を算出して、その値にプラス6をした日曜日までのデータを取得、という感じで行いたいのですが、
肝心の月曜日の求め方が分かりません。
参考書やネットを調べても分からなかったため、この場をお借りして質問させていただきました。
何卒ご教授お願いいたします。
No.1ベストアンサー
- 回答日時:
曜日の算出を行うにはDATEPARTを使います。
DATEPART(dw,GETDATE())
これにより日曜日から土曜日までが1~7の数字で返ります。
それぞれの曜日の数字が返ってきたときに、何日動かせばその週の月曜日になるかを考えてください。
日 1 -6日
月 2 0日(そのまま採用)
火 3 -1日
水 4 -2日
木 5 -3日
金 6 -4日
土 7 -5日
よく見てみると、日曜日以外は返ってきた数字を2から引けば動かすべき日数になることがわかります。
(日曜日だけは特別です)
したがって、
CASE WHEN DATEPART(dw,GETDATE())=1 THEN DATEADD(d,-6,GETDATE()) ELSE DATEADD(d,2-DATEPART(dw,GETDATE()),GETDATE()) END
これでその週の月曜日が求まりますが、GETDATE()というのは時刻もついているので、検索対象のフィールドに時刻まで入っていないなら、このままでは月曜日の取引が全部拾われないことになります。
時刻部分を落とす最もシンプルな方法は一旦年月日の文字型にしてから日付型に戻すことです。
CONVERT(datetime,CONVERT(varchar,日付,111))
上記をまとめると
BETWEEN
CONVERT(datetime,CONVERT(varchar,
CASE WHEN DATEPART(dw,GETDATE())=1 THEN DATEADD(d,-6,GETDATE()) ELSE DATEADD(d,2-DATEPART(dw,GETDATE()),GETDATE()) END,111))
AND
DATEADD(d,6,CONVERT(datetime,CONVERT(varchar,
CASE WHEN DATEPART(dw,GETDATE())=1 THEN DATEADD(d,-6,GETDATE()) ELSE DATEADD(d,2-DATEPART(dw,GETDATE()),GETDATE()) END,111)))
となります。
逆にもし検索対象のフィールドが時刻も含まれているならば、6日足して日曜日を求めるのではなく、7日足して月曜日を求めて、日付>=週初の月曜日(時刻なし) AND 日付<次の月曜日(時刻なし)としてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- Excel(エクセル) 出勤簿の土、日、休日に色付けできない 2 2022/08/04 20:10
- その他(恋愛相談) 私は21歳の女で精神疾患があります。 今月からアルバイトを日曜火曜木曜の週三日で始めましたが、2週間 5 2022/10/16 06:32
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Excel(エクセル) 週毎の集計 2 2023/08/04 16:56
- その他(教育・科学・学問) 私の友人が課題提出を今日迄だと思っていたけれど大学が今日休みだと気付いてやばい!と連絡してきました。 3 2023/02/12 17:52
- MySQL SQLについて教えて下さい。 SELECT分で、あるカラムにある日付の 半年先のデータを取って来たい 3 2022/12/07 22:28
- Access(アクセス) accessの日付フィールドから前年度だけを取り出したい 3 2022/04/13 23:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
Accessの日付時刻型から日付、...
-
アクセス:既定値に土日含まず...
-
Accessで文字列検索
-
Accessで実労日数を算出したい
-
sql update で 抽出条件データ...
-
ACCESS・重複データ入力をエラーに
-
クエリでの集計について
-
Access2000 週報のレポート作成
-
VBA 別シートの同じ日付の欄に...
-
【Accessで困っています...
-
【vba】日付の形式が勝手に変わ...
-
アクセスの更新クエリについて
-
アクセスで年度で表示
-
accessのレポート
-
ACCESS で、古い日付順に抽出し...
-
アクセスの昇順並び替えで空白...
-
前のレコードの合計に現レコー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
VBA 別シートの同じ日付の欄に...
-
アクセスで日付を入力すると曜...
-
アクセス:既定値に土日含まず...
-
Excel→Accessへの日付データの...
-
Accessの日付時刻型から日付、...
-
BCPでCSV内の文字列をテーブル...
-
エクセル-過去6カ月分の合計を...
-
Access クエリで、レコードの無...
-
前のレコードの合計に現レコー...
-
ACCESSの空白をカウントする
-
指定日付を起点にして最新日付...
-
Accessのデータ型の日付/時刻型...
-
【vba】日付の形式が勝手に変わ...
-
ビュー定義をプログラムで動的...
-
アクセスで月単位の抽出
-
【エクセル】指定した日付に一...
-
Accessで日付の比較がうまくい...
おすすめ情報