

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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
アクセスのクエリー作成
-
VBA 別シートの同じ日付の欄に...
-
年度ごとの最大値
-
Accessの日付時刻型から日付、...
-
日付型のフィールドに空白を入...
-
Access クエリで、レコードの無...
-
Excel→Accessへの日付データの...
-
【エクセル】指定した日付に一...
-
アクセスで日付を入力すると曜...
-
アクセスの昇順並び替えで空白...
-
Aceess2000で8桁の数字を日付型...
-
Accessのデータ型の日付/時刻型...
-
【vba】日付の形式が勝手に変わ...
-
前のレコードの合計に現レコー...
-
ACCESSの空白をカウントする
-
エクセルのWEBクエリで取り込め...
-
エクセル-過去6カ月分の合計を...
-
アクセスで月単位の抽出
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
年度ごとの最大値
-
アクセスのクエリー作成
-
VBA 別シートの同じ日付の欄に...
-
アクセス:既定値に土日含まず...
-
アクセスで日付を入力すると曜...
-
Excel→Accessへの日付データの...
-
指定日付を起点にして最新日付...
-
ACCESSの空白をカウントする
-
Accessのデータ型の日付/時刻型...
-
Accessの日付時刻型から日付、...
-
BCPでCSV内の文字列をテーブル...
-
エクセル-過去6カ月分の合計を...
-
前のレコードの合計に現レコー...
-
【vba】日付の形式が勝手に変わ...
-
アクセスで月単位の抽出
-
Access クエリで、レコードの無...
-
アクセスの昇順並び替えで空白...
おすすめ情報