如何在mysql

时间:2017-03-24 05:31:04

标签: mysql datetime

我在表格中有数据,我可能会或可能没有每天的记录。我需要获取最近6周的数据,我每周只需要最后一次记录。

假如今天是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-03-23 11:20:30

2017-03-23 10:40:21

2017-03-21 09:58:42

2017-03-03 15:02:20

2017-03-02 14:41:49

2017-02-23 10:59:26

2017-02-22 15:59:53

2017-02-21 11:08:57

2017-02-21 10:43:24

2017-02-18 01:37:33

2017-02-11 01:38:29

输出:

(第1周)2017-02-11 - 2017-02-17 = 2017-02-11 01:38:29

(第2周)2017-02-18 - 2017-02-24 = 2017-02-23 10:59:26

(第3周)2017-02-25 - 2017-03-03 = 2017-03-03 15: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

1 个答案:

答案 0 :(得分:0)

试试这个

select datepart(wk, datecolumn), max(datecolumn) from yourtable
where (datediff(wk,datecolumn,getdate())) < 6
group by datepart(wk, datecolumn)
order by 2 desc