私は毎日のレコードがあるかもしれないテーブルにデータを持っています。私は最後の6週間のデータを取得する必要があります。ここでは、毎週最後のレコードしか必要としません。mysqlで毎週最後のレコードを取得する方法
今日が24日であれば、18日から24日と11日から17日までの最後のレコードを6週間まで取得する必要があるとします。
このクエリでは6週間のレコードがすべて提供されますが、毎週最後のレコードが必要です。
SELECT snap.created_at
FROM snapshots snap
WHERE snap.created_at > DATE_SUB(NOW(), INTERVAL 6 WEEK)
ORDER BY created_at DESC;
例:
のcreated_at
2017年3月23日十一時20分30秒
2017年3月23日10時40分21秒
2017-03- 21 09:58:42
2017-03-03 15:02:20
2017年3月2日午後02時41分49秒
2017年2月23日午前10時59分26秒
2017年2月22日午後03時59分53秒
2017年2月21日11 :08:57
2017年2月21日午前十時43分24秒
2017年2月18日1時37分33秒
2017年2月11日1時38分29秒
出力:
(第1週)2017年2月11日 - 2017年2月17日= 2017年2月11日午前1時38分29秒
(第2週)2017年2月18日 - 2017年2月24日= 2017年2月23日午前10時59分26秒
(第3週)2017年2月25日 - 2017年3月3日= 2017年3月3日夜3時02分20秒
(第4週)2017-03-04 - 2017-03-10 = 2017-03-03 15:02:20(今週のレコードがないので、先週の最新のレコードを表示する必要があります)
(第5週)2017-03-11-2017-03-17 = 2017-03-03 15: 02:20(今週のレコードがなく、先週の最新のレコードを表示する必要があるため)
(第6週)2017-03-18 - 2017-03-24 = 2017-03- 23 11時20分30秒
をお試しください今から6日目になると、最初の週の始まりが後ろに移動するでしょうか?ここにサンプルデータを入れて、予期した結果を含めてください –
MYSQLやSQLを使っていますか? –
select * from tableの間にselectクエリを書くwhere DATEDIFF(GETDATE()-6、 'DAYS')とGETDATE()の間のcol_Date –