こんにちは、日付フィールドとその他の情報を含むテーブルがあります。先週(日曜日から週が始まる)のすべてのエントリを選択します。
テーブル値:
id date
2 2011-05-14 09:17:25
5 2011-05-16 09:17:25
6 2011-05-17 09:17:25
8 2011-05-20 09:17:25
15 2011-05-22 09:17:25
先週からすべてのIDを選択します。期待される出力は5、6、8です。(ID 2は先週ではなく、ID 15は今週です。)
記述方法とそのためのSQLクエリ。
SELECT id FROM tbl
WHERE date >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY
AND date < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY
select id from tbname
where date between date_sub(now(),INTERVAL 1 WEEK) and now();
SELECT id FROM table1
WHERE YEARWEEK(date) = YEARWEEK(NOW() - INTERVAL 1 WEEK)
YEARWEEK関数を使用して、前の暦週全体に戻ります(今日の7日前ではありません)。 YEARWEEKは、週の開始を設定するか、年の最初/最後の週の処理方法を決定する2番目の引数も許可します。 YEARWEEKを使用すると、1つの変数に戻る/進むための週数を保持できます。また、過去/未来の年の同じ週数は含まれず、ここにある他のほとんどの回答よりもはるかに短くなります。
簡略化された形式:
先週のデータ:
SELECT id FROM tbl
WHERE
WEEK (date) = WEEK( current_date ) - 1 AND YEAR( date) = YEAR( current_date );
2週間前のデータ:
SELECT id FROM tbl
WHERE
WEEK (date) = WEEK( current_date ) - 2 AND YEAR( date) = YEAR( current_date );
SQL Fiddle
Phpで計算を行い、それをクエリに追加できます。
$date = date('Y-m-d H:i:s',time()-(7*86400)); // 7 days ago
$sql = "SELECT * FROM table WHERE date <='$date' ";
今、これは一週間前の日付を与えます
おそらく最も簡単な方法は次のとおりです。
SELECT id
FROM table
WHERE date >= current_date - 7
8日間(月曜日-月曜日)
これは簡単な方法です。これは私のコードの実際の例であり、完全に機能します。
where("actions.created_at >= DATE_SUB(CURDATE(), INTERVAL 1 WEEK)")
ミドルウェア(php、pythonなど)で、今日を基準として日が日曜日である日を計算する必要があります*
次に、
select id
from table
where date >= "$sunday-date" + interval 7 DAY
1行にすることができます。
SELECT * FROM table WHERE Date BETWEEN (NOW() - INTERVAL 7 DAY) AND NOW()
人々にお願いします... OPが尋ねた「先週」と私が探していた(しかし満足のいく答えが見つからなかった)最後の週です。
今日が火曜日の場合、LAST WEEKは月曜日ですA WEEK AGO to Sunday A WEEK AGO.
そう:
WHERE
WEEK(yourdate) = WEEK(NOW()) - 1
またはISO週の場合:
WHERE
WEEK(yourdate, 3) = WEEK(NOW(), 3) - 1
上記のクエリは機能しません。 where
句の後、列の値をCAST
できない場合、機能しません。列の値をcast
する必要があります。
例えば。:
SELECT.....
WHERE CAST( yourDateColumn AS DATE ) > DATEADD( DAY, -7, CAST( GETDATE() AS DATE )
また、簡単に使用できます
SELECT *
FROM inventory
WHERE YEARWEEK(`modify`, 1) = YEARWEEK(CURDATE(), 1)
WHERE yourDateColumn > DATEADD(DAY, -7, GETDATE()) ;
i日曜日からの週の開始にこれを使用します。
SELECT id FROM tbl
WHERE
date >= curdate() - INTERVAL DAYOFWEEK(curdate())+5 DAY
AND date < curdate() - INTERVAL DAYOFWEEK(curdate())-2 DAY
私はしばしば「先週」の素早いチェックも行いますが、以下は私にとってはうまくいく傾向があり、今日も含まれています。
DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = Getdate() - 7 /* Seven Days Earlier */
SET @EndDate = Getdate() /* Now */
SELECT id
FROM mytable
WHERE date BETWEEN @StartDate AND @Enddate
これに今日を含めないようにするには、@ EndDateから余分な日を引いてください。今日これらの2つの変数を選択すると、
@StartDate 2015-11-16 16:34:05.347/*先週の月曜日* /
@EndDate 2015-11-23 16:34:05.347/*今週の月曜日* /
日曜日から日曜日にしたい場合は、次のようにします。
SET @StartDate = Getdate() - 8 /* Eight Days Earlier */
SET @EndDate = Getdate() - 1 /* Yesterday */
@StartDate 2015-11-15 16:34:05.347/*前の日曜日* /
@EndDate 2015-11-22 16:34:05.347/*先週の日曜日* /
最後の1週間のレコードを取得する
次のMySQLクエリを使用して、mysqlデータベーステーブルから先週のレコードを取得します。
SELECT name, created_at
FROM employees
WHERE
YEARWEEK(`created_at`, 1) = YEARWEEK( CURDATE() - INTERVAL 1 WEEK, 1)
SELECT id FROM tb1
WHERE
YEARWEEK (date) = YEARWEEK( current_date -interval 1 week )