2012-01-12 16 views
0

タイムシートレポートにSQLクエリを作成しています。選択した日付の週の詳細のみを返すレポートが必要です。私は2012年2月1日(DD/MM/YYYY)を選ぶ場合選択した曜日の日付を返すSQL

例えば、それだけで2012年2月1日と2012年8月1日の間に結果を返す必要があります。

おかげ

+0

あなたはカレンダーを意味しています週間? (水曜日を指定した場合、計算には前週の月曜日から次の日曜日までの計算が含まれますか?)または指定された日付から始まる7日間だけですか? – MatBailie

+0

ユーザーが選択した日に関係なく7 – Melanie

答えて

1
SELECT 
    * 
FROM 
    yourTable 
WHERE 
    dateField >= @yourDate 
    AND dateField < @yourDate + 7 

SQLのいくつかのバリエーションがDATEVALUEに7日を追加する具体的な方法を有することができます。 DateAdd(Day, 7, @date)
- - DATE_ADD(@date, INTERVAL 7 DAYS)
- このような
...などなど

などは、このオプションは、両方の指標フレンドリーであり、時間の部分だけでなく、日付部分を持つデータベースフィールドに強いです。

0
SELECT * FROM table_name 
WHERE date BETWEEN '1/02/2012' AND '1/08/2012'; 

あなたの日付とyourdateで例の日付を置き換えることができます+ 6

例えばここを見て:http://www.roseindia.net/sql/sql-between-datetime.shtml

+0

「BETWEEN」を使用する場合、+7ではなく+6にする必要があります。 – MatBailie

+0

あなたはもちろんそうです。 。このBETWEEN使用するときは、あまりにも – tehdoommarine

0

あなたの最も簡単なあなたのSQLエンジンにWEEK_OF_YEAR機能と同等です

でもDATE_ADDを使用できます

WHERE table.date BETWEEN target_date AND DATE_ADD(target_date,INTERVAL 7 DAY) 
+0

あなたは右のコース私が使用してタイムスタンプに慣れている – MatBailie

+0

'6 DAY'なく' 7 DAY'する必要があります私には適用さ:( – amccausl

0

これは、使用しているデータベースシステムによって異なります。

のMySQL:MySQLが持っている機能は、SQL ServerがDATEPART()関数でこのような何かを行うことができますWEEK()calles

SELECT 
* 
FROM table 
WHERE WEEK(date_col) = WEEK('02/01/2012'); 

のSQL SERVER:

SELECT 
    * 
    FROM table 
    WHERE DATEPART(WEEK, datecol) = DATEPART(WEEK,'02/01/2012'); 
+0

これを - 私は:(タイムスタンプを使用して使用していますwe.g(1週間の日数を持つには、必要な結果をしないことがあり、むしろそうで求める。 – MatBailie

+0

よりも、スキャン中のインデックスと結果を難読化しますが、あなたのポスト(民主党員)のように任意の日付に7日を追加することを加えること今週の水曜日に最後の週の。水曜日)。あなたは速いが、 – Mithrandir

+0

はああ、私はあなたを得る????正しいかもしれません!OPは、カレンダーの週望んでいるかどうか、そしてOPは週考えるものならばそれは依存しません私はちょうど7日間のウィンドウを前提としていましたが、今は単にOPが望んでいるとは確信していません:)良い点! – MatBailie

関連する問題